首页 > 解决方案 > 为什么这个 localhost cookie 不在浏览器中设置?

问题描述

在我正在构建的服务器中,我想设置一个带有身份验证令牌的 cookie,该令牌在用户登录时设置。登录请求是一个 POST XHR,其表单包含我的用户名和密码。我正在测试这个http://localhost:3000

我可以看到服务器正在尝试设置 cookie,因为响应具有以下标头:

set-cookie: token=json-web-token-value;Expires=Fri, 12 Mar 2021 18:19:12 GMT

然而 Chrome 似乎忽略了这一点。对 API 的后续请求不包含 cookie,并且它也不在 devtools 部分的 cookie 列表http://localhost:3000Application -> Cookies

当我尝试使用 JS 手动设置 cookie 时

document.cookie = 'token=json-web-token-value;Expires=Fri, 12 Mar 2021 18:19:12 GMT'

然后cookie确实设置正确。所以问题显然不在于 cookie 本身的内容。

我在这里做错了什么?


编辑:火狐

我决定检查 Firefox 的工作方式是否有任何不同,你瞧,cookie 确实被设置了。唯一看起来奇怪的是路径被设置为/auth- 可能是因为登录端点路径是/auth/login. 将我的服务器中的路径设置为/手动会导致 cookie

token=json-web-token-value;Path=/;Expires=Fri, 12 Mar 2021 18:34:27 GMT

现在似乎即使在 Chrome 中也可以使用!

所以现在我的问题是:

  1. 为什么未定义路径会使 Chrome 完全忽略 cookie?
  2. 为什么不指定路径会使 Firefox 将路径设置为/authand not /,或者/auth/login就此而言?

标签: cookiessetcookie

解决方案


推荐阅读