set-cookie header 未在 Edge 中设置 cookie
set-cookie header not setting cookie in Edge
我正在本地测试应用程序并正在向 http://localhost:3000/api/auth/login 发出授权请求。 A set-cookie header 在带有 JWT 授权令牌的响应中返回。 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 吗?
我找到了适合我的情况的答案。
我们在客户端使用 fetch。在一些较旧的浏览器中,本机获取实现将默认为 credentials: "omit",
而较新的浏览器默认为 credentials: "same-origin"
.
因此,添加此选项似乎允许 Edge 在获取请求中接收 cookie,例如
fetch('/users', {
credentials: 'same-origin'
})
https://github.com/github/fetch#sending-cookies供参考。尽管有标题名称,"omit" 将禁用发送和接收 cookie。
我正在本地测试应用程序并正在向 http://localhost:3000/api/auth/login 发出授权请求。 A set-cookie header 在带有 JWT 授权令牌的响应中返回。 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 吗?
我找到了适合我的情况的答案。
我们在客户端使用 fetch。在一些较旧的浏览器中,本机获取实现将默认为 credentials: "omit",
而较新的浏览器默认为 credentials: "same-origin"
.
因此,添加此选项似乎允许 Edge 在获取请求中接收 cookie,例如
fetch('/users', {
credentials: 'same-origin'
})
https://github.com/github/fetch#sending-cookies供参考。尽管有标题名称,"omit" 将禁用发送和接收 cookie。