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的方式的问题,而与客户端无关.谢谢凯文.

点赞