ajax – 什么导致cookie不能在客户端上设置?

前端之家收集整理的这篇文章主要介绍了ajax – 什么导致cookie不能在客户端上设置?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个使用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.

有任何想法吗?

我想我找到了解决方案.由于在开发过程中,我的服务器位于“localhost:30002”,而我的网络应用程序位于“localhost:8003”,因此它们被视为与CORS不同的主机.因此,我对服务器的所有请求都包含在CORS安全规则中,尤其是 Requests with credentials.“凭据”包括链接上标明的cookie,因此我不接受返回的cookie,因为我没有通过
xhrFields: {
  withCredentials: true
}

到jQuery的$.ajax函数.我还必须将该选项传递给后续的CORS请求才能发送cookie.

我在服务器端添加了标头Access-Control-Allow-Credentials:true,并将Access-Control-Allow-Origin标头从通配符更改为http:// localhost:8003(端口号很重要!).该解决方案现在适用于我,并存储cookie.

原文链接:https://www.f2er.com/ajax/160158.html

猜你在找的Ajax相关文章