使用XMLHttpRequest執行Ajax請求

昨天,一個朋友,問我一個問題: jquery

經過查找網絡資源,發如今服務器端識別Ajax請求和通常請求的的方法。大部分說到,經過http請求頭中X-Requested-With的值來區分。如此,朋友經過以下代碼執行了請求,卻始終沒有找到這個標誌信息: ajax


// 此只做爲測試代碼
var req = new XMLHttpRequest();
req.open('GET', 'http://www.baidu.com', true);
req.send();
經過firebug,監聽到的請求信息中,沒有在請求頭中發現 X-Requested-With的信息。


分析這個問題: 服務器

其實,咱們經過js中的XMLHttpRequest,發送的爲基本的header信息,如此,懷疑X-Requested-With的這個標誌位是本身設置下的。 網絡

接下來,我用經過jquery的Ajax進行了一次請求,發現存在這個標誌位。接下來爲了證實個人思路,去jquery的源碼中,查看一下Ajax那段代碼,從中找到了咱們須要的信息,即: dom

// X-Requested-With header
// For cross-domain requests, seeing as conditions for a preflight are
// akin to a jigsaw puzzle, we simply never set it to be sure.
// (it can always be set on a per-request basis or even using ajaxSetup)
// For same-domain requests, won't change header if already provided.
if ( !s.crossDomain && !headers["X-Requested-With"] ) {
	headers[ "X-Requested-With" ] = "XMLHttpRequest";
}
如此,證實咱們的思路是正確的,那麼咱們如何向XMLHttpRequest請求頭中添加這個信息呢?


很簡單,查了一下文檔,發現這樣就能夠實現咱們的須要了!
ide

// 此只做爲測試代碼
var req = new XMLHttpRequest();
req.open('GET', 'http://www.baidu.com', true);
// 這裏的請求頭信息,咱們能夠自定義的設置
req.setRequestHeader('X-Requested-With','XMLHttpRequest');
req.send();
相關文章
相關標籤/搜索