javascript - Safari 不向第二个 CORS 请求包含 COOKIE

标签 javascript angular cookies cross-domain

我在 https://somedomain.dev ( Angular )上有前端,在 https://api.somedomain.dev 上有 api (所以我有相同的域,但是不同的子域 - 这很重要,因为对于不同的整个域,Safari 会 block 所有 cookies )。我按以下顺序向 API 发送 3 个请求

  • POST/api/user/login - 在响应服务器中设置HttpOnly COOKIE(带有授权 token :JWT
  • GET/api/user/profile - 获取用户配置文件(浏览器应添加 COOKIE 来请求)
  • GET/api/buildings - 获取建筑物(浏览器应添加 COOKIE 来请求)

问题:Safari 仅为 GET 配置文件 添加 Cookie,而不向 GET 建筑物 添加 Cookie(Chrome、Firefox 和 Edge 向每个获取请求)

所有请求详细信息( header 等):

问题:为什么 Safari 不向 buildings 请求添加 cookie,以及如何强制 Safari(使用 JavaScript 或服务器代码)向所有请求添加 cookie(登录后) )?

最佳答案

好的 - 经过漫长的分析请求后,我终于发现了问题 - 在 login 响应中,服务器在 Set-Cookie header 中设置了 cookie 生命周期

Max-Age: 43200;

这适用于 Chrome、Firefox 和 Edge - 但不适用于 Safari(可能 Safari 会将其视为 1 秒 cookie 生命周期,这就是为什么它只为第一个 GET 请求添加 cookie) - 所以我将其更改为

max-age=43200;

现在可以在任何地方使用:)

关于javascript - Safari 不向第二个 CORS 请求包含 COOKIE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61386688/

相关文章:

angularjs - Angular 2 Http 测试多个连接

angular - 将指令限制为Angular中的特定主机(组件)

angular - 为 Angular5 添加组件时出错

javascript - 评估 : odd session management in web-based application

javascript - 如何添加不可移动的页脚信用

javascript - 无法从 Android 上的解析推送通知接收额外数据

php - 使用带有查询字符串的 facebook like 按钮 - like 按钮不起作用

javascript - 使用 JS 设置 SVG 元素的属性不起作用

javascript - Jquery非常好吃的 cookies

asp.net - ASP.net 安全 cookie 的安全性如何