加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用XMLHttpRequest执行Ajax请求

发布时间:2020-12-16 00:57:55 所属栏目:百科 来源:网络整理
导读:昨天,一个朋友,问我一个问题: 通过查找网络资源,发现在服务器端识别Ajax请求和一般请求的的方法。大部分说到,通过http请求头中X-Requested-With的值来区分。如此,朋友通过如下代码执行了请求,却始终没有找到这个标志信息: // 此只作为测试代码var re

昨天,一个朋友,问我一个问题:

通过查找网络资源,发现在服务器端识别Ajax请求和一般请求的的方法。大部分说到,通过http请求头中X-Requested-With的值来区分。如此,朋友通过如下代码执行了请求,却始终没有找到这个标志信息:


// 此只作为测试代码
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那段代码,从中找到了我们需要的信息,即:

// 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请求头中添加这个信息呢?


很简单,查了一下文档,发现这样就可以实现我们的需要了!

// 此只作为测试代码
var req = new XMLHttpRequest();
req.open('GET',true);
// 这里的请求头信息,我们可以自定义的设置
req.setRequestHeader('X-Requested-With','XMLHttpRequest');
req.send();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读