Safari 14 - 不会为同一域上的 XHR 请求发送 Cookie

时间:2021-05-14 12:57:39

标签: angular cookies safari xmlhttprequest webkit

这似乎是一个经常以不同方式出现的问题,但尽管研究了几个小时,我仍然没有找到解决方案。

我目前在 MacOS BigSur 上的 Safari 14 中遇到一个问题,即 Safari 从未通过 XmlHttpRequests 将 cookie 发送到同一根域上的 api。

确实,我正在开发一个 Angular SPA,其中客户端应用程序本地托管在 https://myapp.local 上,出于测试目的,我在 https://api.myapp.local 上本地运行了一个 API。

对于某些请求,我们需要附加 2 个最初由 API 设置的 cookie。我能够在 API 响应和 Safari DevTools 的“存储”部分中看到上述 cookie,但是它们永远不会发送回服务器以用于后续 XHR 请求。 (带有凭据的 XHR)

我确实尝试了不同的 cookie 属性,但我的尝试都没有成功:

  • sameSite=None、domain=myapp.local、安全、httpOnly
  • sameSite=Lax,domain=myapp.local,安全,httpOnly

我发现解决该问题的唯一方法是禁用 Safari 隐私设置中的“防止跨站点跟踪”选项(这对我们的用户来说不是一个合适的解决方案,因为默认情况下启用了此选项......)

尽管如此,我不明白为什么 Safari 将这些 cookie 视为第 3 方 cookie(并阻止它们),因为 API 托管在与客户端 Web 应用程序相同的域(在子域上,更准确)。而且,如果我理解正确,cookies 应该由浏览器发送给子域请求,sameSite=Lax 和 sameSite=None。特别是因为它在 Firefox 和 Chromium 浏览器上完美运行。

无论如何,如果有人有想法或解决方案,我会很想听听,因为我不知道该尝试什么了!

非常感谢!

0 个答案:

没有答案