我知道以前已经以各种形式询问过这个问题,但是我似乎无法解决这个问题。我尝试使用jQuery和本机JS API发出Ajax请求。
我的情况如下(参见附图):
在任何人开始关于跨域请求的讲座之前,我先说几件事:
Access-Control-Allow-Origin
那么,为什么,为什么,为什么浏览器在进行HTTPS Ajax调用时不传递cookie?有任何想法吗?我将失去理智…
+-----------+ HTTP Request +-----------+ |Browser |+---------------->|Server | +-----------+ +-----------+ HTTP Response <----------------+ Set-cookie Ajax HTTP Req. +----------------> Cookie (OK) HTTP Response <----------------+ Set-cookie (OK) Ajax HTTPS Req. +----------------> No Cookie (!!!)
好的,找到解决cookie问题的方法。
请参阅XHR规范,jQuery文档和StackOverflow。
切换协议和/或子域时发送cookie的解决方案是将withCredentials属性设置为true。
withCredentials
true
例如(使用jQuery)
$.ajax( { /* Setup the call */ xhrFields: { withCredentials: true } });