跨域AJAX不发送X-Requested-With头

前端之家收集整理的这篇文章主要介绍了跨域AJAX不发送X-Requested-With头前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在http://www.a.com/service.asmx上创建Web服务,并从http://www.b.com向其发送跨域ajax请求。检查Firebug中的标头,或Live HTTP标头或任何其他插件

在请求标头中没有跟踪X请求的HTTP头字段。

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

为什么跨域ajax请求忽略X请求的头域?

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

如果你使用jQuery来做你的ajax请求,它不会发送头X-Requested-With(HTTP_X_REQUESTED_WITH)= XMLHttpRequest,因为它是跨域。但是有2种方法来修复和发送标题

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

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

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

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

但是这样,服务器必须允许这些头,那么服务器需要打印这些头:

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

上面的第一行将避免错误“Origin不允许Access-Control-Allow-Origin”。第二行将避免错误“请求头字段X请求 – 访问控制允许头不允许。

原文链接:https://www.f2er.com/ajax/160475.html

猜你在找的Ajax相关文章