http - 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?
解决方案
我找到了一个对我有用的答案。
我们在客户端上使用 fetch。在一些较旧的浏览器中,本机 fetch 实现将默认为,credentials: "omit",
而较新的浏览器默认为credentials: "same-origin"
.
因此,添加此选项似乎允许 Edge 在 fetch 请求中接收 cookie,例如
fetch('/users', {
credentials: 'same-origin'
})
https://github.com/github/fetch#sending-cookies供参考。尽管标题的名称,“省略”将禁用发送和接收 cookie。
推荐阅读
- java - 确定代码的哪一部分负责使程序按照用户在测试次数中所说的去做
- typescript - TypeScript 中的类型谓词
- java - 二进制到十进制转换器的输入验证
- linux - 保持应用程序运行,如果它崩溃,请重新启动它。Ubuntu 16
- android - 无法获取用户位置
- visual-studio-code - 粘贴到 VS Code 中的文本有空格但不注册所有空格
- javascript - 通过 socket.io 在服务器端存储新添加的元素
- c# - log4net:错误无法创建附加程序 [RollingLogFileAppender]
- java-8 - 使用 Zulu jdk 11 从 Alpine Linux Image 调用 GRPC 服务时出现 SSL 连接问题
- r - 如何编写中缀函数?