【发布时间】:2018-12-03 16:48:49
【问题描述】:
我正在本地测试应用程序并向http://localhost:3000/api/auth/login 发出授权请求。带有 JWT 身份验证令牌的响应中会返回一个 set-cookie 标头。 JWT 看起来像:
JWT-TOKEN=[really long alphanumeric string];Version=1;Comment=;Domain=;Path=/;Max-Age=3600;;HttpOnly
之后,我向http://localhost:3000/api/other/resource 发出另一个请求,但收到一个未经授权的错误,因为它期望请求中有一个带有 JWT 令牌的 cookie。
在 Firefox、Safari 和 Chrome 中设置了 Cookie,但在 Edge 中没有设置。 Edge 开发工具控制台中没有出现任何问题。任何想法为什么没有在 Edge 中设置 cookie?
【问题讨论】:
-
你解决过这个问题吗?我目前正在研究完全相同的问题,但在非本地域上也失败了。
-
我找到了一个潜在的解决方案,但我的后端团队从未尝试过(比与 Edge 的兼容性更紧迫的问题)。基本上,拥有“域”字段会使设置 cookie 静默失败。删除它可能会解决问题,但由于它从未实施,我没有费心更新这篇文章。我发现另一个帖子提到了这一点:stackoverflow.com/a/34766660/1202995
-
我必须使用域字段,以便我们拥有子域通配符,它与我的解决方案完美配合。我还发现我的节点服务器在 cookie 上设置了 Max-Age 属性,并且也将其删除以支持使用 Expires。
-
您的域参数是什么样的?
-
.example.com尽管它在没有尾随点的情况下同样有效,并且 RFC 说尾随点应该没有区别。
标签: http cookies microsoft-edge setcookie