小编典典

是什么导致未在客户端上设置cookie?

ajax

我有一个使用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标签上将“过期”显示为“无效日期”,但这也可能是开发工具错误

有任何想法吗?


阅读 272

收藏
2020-07-26

共1个答案

小编典典

我想我找到了解决方案。由于在开发过程中,我的服务器位于“ localhost:30002”,而我的Web应用程序位于“
localhost:8003”,因此它们被视为有关CORS的 不同
主机。因此,我对服务器的所有请求都被CORS安全规则所涵盖,尤其是带有凭据的请求。“凭据”包括该链接上指出的cookie,因此返回的cookie不被接受,因为我没有通过

xhrFields: {
  withCredentials: true
}

jQuery的$.ajax功能。我还必须将该选项传递给后续的CORS请求,以便发送Cookie。

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

2020-07-26