首页 > 解决方案 > set-cookie 标头未在 Edge 中设置 cookie

问题描述

我正在本地测试应用程序并向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。

Cookie 是在 Firefox、Safari 和 Chrome 中设置的,但不是在 Edge 中设置的。Edge 开发工具控制台中没有出现任何问题。任何想法为什么没有在 Edge 中设置 cookie?

标签: httpcookiesmicrosoft-edgesetcookie

解决方案


我找到了一个对我有用的答案。

我们在客户端上使用 fetch。在一些较旧的浏览器中,本机 fetch 实现将默认为,credentials: "omit",而较新的浏览器默认为credentials: "same-origin".

因此,添加此选项似乎允许 Edge 在 fetch 请求中接收 cookie,例如

fetch('/users', {
  credentials: 'same-origin'
})

https://github.com/github/fetch#sending-cookies供参考。尽管标题的名称,“省略”将禁用发送和接收 cookie。


推荐阅读