Safari不包含COOKIE到第二个CORS请求中

我的前端在 https://somedomain.dev (angular)和api在 https://api.somedomain.dev (所以我有相同的域名,但不同的子域名–这一点很重要,因为对于不同的整个域名,Safari将 阻止饼干). 我按照以下顺序向API发送了3个请求

  • POST /api/user/login – 在响应服务器设置 仅限HttpOnly COOKIE(含授权令牌。JWT
  • GET /api/user/profile – 获取用户资料(浏览器应在请求中添加COOKIE)。
  • GET /api/buildings – 获取建筑物(浏览器应添加COOKIE请求)。

问题: Safari只添加cookie GET profile 而不是将cookie添加到 GET buildings (Chrome、Firefox和Edge在每个GET请求中添加COOKIE)

所有请求的细节(标题等)。

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

解决方案:

好的–经过长时间的分析请求,我终于发现了问题所在–在 login 中设置的服务器响应。Set-Cookie 头部的cookie寿命由

Max-Age: 43200;

这在Chrome、Firefox和Edge上可以工作–但在Safari上不行(可能Safari将其视为1s的cookie寿命,这就是为什么它只为第一次GET请求添加cookie)–所以我将其改为

max-age=43200;

现在到处都能用:)

给TA打赏
共{{data.count}}人
人已打赏
解决方案

Django是否为ManyToMany字段做索引?

2022-5-13 21:00:25

解决方案

为什么我在Python文件"<stdin> "中得到这个错误,第2行 n new_squares.append(squares[i]) n ^ IndentationError: expected an indented block?

2022-5-13 22:00:26

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索