我正在本地测试一个应用程序并发出授权请求http://localhost:3000/api/auth/登录 http://localhost:3000/api/auth/login。响应中将返回 set-cookie 标头以及 JWT 身份验证令牌。 JWT 看起来像:
JWT-TOKEN=[really long alphanumeric string];Version=1;Comment=;Domain=;Path=/;Max-Age=3600;;HttpOnly
之后,我再提出一个请求http://localhost:3000/api/其他/资源 http://localhost:3000/api/other/resource并且收到未经授权的错误,因为它需要请求中包含带有 JWT 令牌的 cookie。
Cookie 在 Firefox、Safari 和 Chrome 中设置,但在 Edge 中未设置。 Edge 开发工具控制台中没有任何错误。知道为什么 Edge 中没有设置 cookie 吗?
我找到了一个适用于我的案例的答案。
我们在客户端使用 fetch。在一些较旧的浏览器中,本机获取实现默认为credentials: "omit",
而较新的浏览器默认为credentials: "same-origin"
.
因此,添加此选项似乎允许 Edge 在 fetch 请求中接收 cookie,例如
fetch('/users', {
credentials: 'same-origin'
})
https://github.com/github/fetch#sending-cookies https://github.com/github/fetch#sending-cookies以供参考。不管标题的名称如何,“省略”都会禁用发送和接收 cookie。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)