我知道这已经以各种形式提出过,但似乎无法解决这个问题。 我已经尝试使用jQuery和本机JS API来发出Ajax请求。通过HTTPS的HTTP Cookie和Ajax请求
我的情况是下面(见附图):
- 浏览器发出HTTP请求
- 服务器响应,并设置永久性的Cookie
- 浏览器发出HTTP Ajax请求,饼干是有正常的
- 服务器按预期响应,更新Cookie
- 浏览器发出HTTPS Ajax请求,Cookie不再存在(?!)
- Server为“默认”的响应,因为没有曲奇(意外情况)
任何人之前开始对跨域请求的讲座让我说出一两件事情:
- 我知道,这是一个跨域请求(不同的协议),这就是为什么服务器在响应中设置
Access-Control-Allow-Origin
标题(并且我使用的是Chrome和Firefox,两者都支持CORS) - 但我也知道HTTP cookie应该可以通过HTTPS进行管理(请参阅here)因为主机是相同的
- (编辑)正确设置cookie为一般域(例如, .domain.ext)和既不是仅Http也使得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 (!!!)
捕捉HTTP请求转储,并检查是否'仅HTTP任何'secure'的和在Set-Cookie语句中设置标志。那至少是一个好起点。 – dpq 2012-04-19 15:19:24
都没有设置。 – NeXuS 2012-04-20 01:41:32
http://stackoverflow.com/questions/5441836/jquery-cookie-values-not-maintained-while-moving-from-http-to-https看起来像这是一个故意的限制。 – dpq 2012-04-20 09:49:38