【问题标题】:Safari Cross Site Ajax call does not store cookieSafari Cross Site Ajax 调用不存储 cookie
【发布时间】:2020-11-18 11:47:42
【问题描述】:

我在 VueJS 上有一个网站,在 AWS 上有一个后端。

假设该网站位于 www.mywebsite.com 上,在带有 CPanel 的托管服务器上,而我在 aws 上的后端在 www.mybackend.com 下运行

当用户使用网站登录时,它会对后端进行 axios/fetch 调用。后端将为www.mywebsite.com 域返回一个set-cookie。

虽然 Chrome 和 FF 工作正常。 Safari 不存储 cookie,因为它是一个跨站点 cookie。

有什么简单的方法可以让 Safari 存储 cookie 并将其发送到后端的调用中?我可以用我的主域中的子域屏蔽后端 url 吗?有什么想法吗?

【问题讨论】:

    标签: vue.js cookies safari cross-site


    【解决方案1】:

    Safari 的行为确实与其他浏览器不同。如果它们来自同一个 cookie 域,它将只允许跨域 cookie。

    因此,您可以使其工作,但前提是您能够更改 URL 以使域匹配。

    所以如果你有一个网站:

    www.mywebsite.com
    

    后端位于:

    backend.mywebsite.com
    

    然后您可以通过设置 Domain: 来共享 cookie:

    Set-Cookie: my-cookie=value; Domain=mywebsite.com

    如果这两个站点位于完全不相关的域上并且您无法更改它,那么我不知道有什么方法可以使其与 Safari 一起使用。

    我在https://cors-errors.info/faq#cdc8 上写了一篇更完整的关于在 CORS 中使用 cookie(包括 Safari 的怪癖)的文章

    【讨论】:

      猜你喜欢
      • 2015-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-03
      • 2015-04-03
      • 1970-01-01
      • 2011-12-16
      • 2011-06-10
      相关资源
      最近更新 更多