【发布时间】:2020-08-06 17:55:17
【问题描述】:
我在https://somedomain.dev(角度)上有前端,在https://api.somedomain.dev 上有api(所以我有相同的域但不同的子域 - 这很重要,因为对于不同的整个域,Safari 将block 全部cookies)。我按以下顺序向 API 发送 3 个请求
-
POST /api/user/login- 响应服务器设置 HttpOnly COOKIE(带有授权令牌:JWT -
GET /api/user/profile- 获取用户资料(浏览器应在请求中添加 COOKIE) -
GET /api/buildings- 获取建筑物(浏览器应添加 COOKIE 请求)
问题:Safari 仅为 GET profile 添加 cookie,而不向 GET buildings 添加 cookie(Chrome、Firefox 和 Edge 向每个 GET 请求添加 COOKIE)
所有请求详细信息(标头等):
- Chrome v.81.0:login、profile 和 building
- Safari v. 13.1:login、profile 和 building
- angular: 每个 get 请求都带有
withCredential: true标志(当然这在 Chrome 中有效)
问题:为什么 Safari 不将 cookie 添加到 buildings 请求以及如何强制 Safari(使用 javascript 或服务器代码)将 cookie 添加到所有请求(登录后)?
【问题讨论】:
-
你在这两个请求上都使用
withCredentials? -
@David - 是的 - 在所有请求上(我使用拦截器来做)
标签: javascript angular cookies cross-domain