自定义标头集

时间:2015-11-19 15:39:24

标签: javascript jquery ajax cors

我们正在使用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 / browser在第二个例子中没有发送cookie?

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

1 个答案:

答案 0 :(得分:1)

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