微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 自定义标头集时,不在跨源jquery ajax请求中发送Cookie

我们正在使用jQuery从我们的主域到子域(跨域)发出ajax请求.我们已经设置了CORS,一切正常,直到我们尝试使用请求发送自定义标头.如果在请求中设置了自定义标头,那么我们的会话cookie将不再随请求一起发送.

jQuery版本:2.1.4

我们的起源域名:http://example.com

我们的会话cookie设置为子域名使用,在cookie选项中使用domain:.example.com.

从子域响应发送的CORS标头:

 Access-Control-Allow-Origin : http://example.com
 Access-Control-Allow-Credentials : true
 Access-Control-Allow-Headers : Origin, X-Requested-With, Content-Type, Accept, X-OurCustomHeader

此请求正常(会话cookie随请求一起发送):

 jQuery.ajax({
       url: 'http://sub.example.com/someajaxroute',
       xhrFields: { withCredentials: true },
 }

此请求(带有自定义标头)不起作用(不发送会话cookie):

 jQuery.ajax({
       url: 'http://sub.example.com/someajaxroute',
       xhrFields: { withCredentials: true },
       headers : { 'X-OurCustomHeader' : 'xxx'}
 }

有谁知道为什么jQuery /浏览器没有在第二个例子中发送cookie?

PS.我知道stackoverflow上有很多关于jquery CORS的问题.我已经广泛地浏览了它们,找不到解决这个问题的方法.如果您发现与此确切问题相符的问题,请您将其标记为重复.谢谢.

解决方法:

事实证明(正如@KevinB建议的那样)这是在我们的服务器上处理预检OPTIONS的方式的问题,而与客户端无关.谢谢凯文.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐