首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >跨域AJAX不发送带有头的X请求

跨域AJAX不发送带有头的X请求
EN

Stack Overflow用户
提问于 2011-11-17 07:50:28
回答 1查看 83.8K关注 0票数 53

http://www.a.com/service.asmx上创建一个web服务,并从http://www.b.com.向它发送一个跨域ajax请求。检查FirebugLive 或任何其他您想要的插件中的标头。

请求标头中没有X-Requested-With Header字段的跟踪。

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

为什么对跨域ajax请求省略X-Requested-With头字段?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-22 05:01:47

如果您使用jQuery来执行ajax请求,它将不会发送报头X请求-With (HTTP_X_REQUESTED_WITH) = XMLHttpRequest,因为它是跨域的。但是有两种方法可以修复这个问题并发送标题:

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

代码语言:javascript
运行
复制
$.ajax({
     url: "http://your-url...",
 headers: {'X-Requested-With': 'XMLHttpRequest'}
});  

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

代码语言:javascript
运行
复制
$.ajax({
  url: "http://your-url...",
 crossDomain: false
});

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

代码语言:javascript
运行
复制
print "Access-Control-Allow-Origin: *\n";
print "Access-Control-Allow-Headers: X-Requested-With, Content-Type\n";

以上第一行将避免“访问控制-允许-原产地不允许的原产地”错误。

第二行将避免错误“请求标头字段X请求-With不允许访问-控制-允许-头”。

票数 87
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8163703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档