Skip to main content
 首页 » 编程设计

ajax之跨域 AJAX 不发送 X-Requested-With header

2024年05月29日13wuhuacong

http://www.a.com/service.asmx上创建一个Web服务,并从http://www.b向其发送跨域ajax请求。 com。检查 FirebugLive HTTP Headers 中的 header ,或您希望的任何其他插件。

请求 header 中没有任何 X-Requested-With HTTP header 字段的痕迹。

但是,如果您从同一域(例如 http://www.a.com/about)向同一服务发送 ajax 请求,您将看到该 header 字段。

为什么跨域ajax请求时省略了X-Requested-With头域?

更新:我知道 JSONP 调用本质上不是 AJAX 调用。因此,您在 JSONP 调用中不会看到任何 X-Requested-With header 字段。

请您参考如下方法:

如果您使用 jQuery 执行 ajax 请求,它不会发送 header X-Requested-With (HTTP_X_REQUESTED_WITH) = XMLHttpRequest,因为它是跨域的。但有两种方法可以解决此问题并发送 header :

选项 1)在 ajax 调用中手动设置 header :

$.ajax({ 
     url: "http://your-url...", 
 headers: {'X-Requested-With': 'XMLHttpRequest'} 
});   

选项 2)告诉 jQuery 不要使用跨域默认值,因此它将在 ajax 请求中保留 X-Requested-With header :

$.ajax({ 
  url: "http://your-url...", 
 crossDomain: false 
}); 

但是这样,服务器必须允许这些 header ,然后服务器需要打印这些 header :

print "Access-Control-Allow-Origin: *\n"; 
print "Access-Control-Allow-Headers: X-Requested-With, Content-Type\n"; 

上面的第一行将避免错误“Access-Control-Allow-Origin 不允许来源。”
第二行将避免错误“Access-Control-Allow-Headers 不允许请求 header 字段 X-Requested-With。”