我知道之前已经以各种形式提出过这个问题,但我似乎无法解决这个问题。
我已经尝试使用jQuery和本机JS API来发出Ajax请求。
我的情况如下(见附图):
浏览器发出HTTP请求
服务器响应并设置持久性Cookie
浏览器发出HTTP Ajax请求,Cookie就没问题了
服务器按预期响应,更新Cookie
浏览器发出HTTPS Ajax请求,Cookie不再存在(?!)
服务器提供"默认"响应,因为没有Cookie(意外行为)
在任何人开始关于跨域请求的讲座之前,请先说明一些事情:
我知道这是一个跨域请求(不同的协议),这就是服务器在响应中设置Access-Control-Allow-Origin标头的原因(我使用的是Chrome和Firefox,两者都支持CORS)
但我也知道,HTTP cookie应该可以通过HTTPS进行管理(参见此处),因为主机是相同的
(编辑)为一般域(例如.domain.ext)正确设置cookie,并且HttpOnly和Secure标志都没有设置
那么,为什么,为什么,为什么浏览器在进行HTTPS Ajax调用时不会传递cookie?有任何想法吗?我快要忘了......
+-----------+ HTTP Request +-----------+
|Browser |+---------------->|Server |
+-----------+ +----

博客讨论了在HTTPS环境下,浏览器在跨域Ajax请求中如何处理Cookie的问题。作者遇到的情况是,当从HTTP切换到HTTPS进行Ajax请求时,浏览器没有携带Cookie,导致服务器无法识别。解决方案是在Ajax请求中设置`withCredentials: true`,以允许跨域请求携带Cookie。
最低0.47元/天 解锁文章
1166

被折叠的 条评论
为什么被折叠?



