我有一个使用jQuery.ajax对另一台主机执行请求的Web应用程序(现在实际上是相同的,因为我使用的是“localhost”的不同端口)。然后服务器返回一个cookie。
Chrome的开发工具中显示的HTTP响应中的Cookie值为
Set-Cookie: MyUserSession=JxQoyzYm1VfESmuh-v22wyiyLREyOkuQWauziTrimjKo=;expires=Sun, 10 Feb 2013 22:08:47 GMT;path=/api/rest/
所以将来有4个小时的到期时间。
但是,Cookie不会随后续请求一起存储和发送(在Chrome和Firefox中都经过测试)。我首先认为它必须是“2013年2月10日”而不是“2013年2月10日”,但这并没有什么不同。 Chrome还会在回复的Cookie标签上将“过期”显示为“无效日期”,但也可能是Dev Tools bug。
有什么想法吗?
答案 0 :(得分:0)
在经历了几个小时的类似场景(没有CORS)之后,我发现了另一个可能的原因:确保明确设置cookie的路径。
我的前端应用正在调用HOST_URL/api/members/login
,而这正在返回正确的Set-Cookie
标题,没有路径。
我可以在Chrome DevTools中看到Response Cookies
下的Cookie,但后续请求不包括在内。去了chrome://settings/cookies
,Cookie就在那里,但路径是/api/members
。
在服务器端设置cookie时指定根路径修复了问题。