因此,通过我的应用程序,我允许我们的用户设置自己的自定义domiain,它指向我们在netlify上托管的应用程序。这很好用,但是现在前端显然正在与驻留在不同域上的api进行通信。
在我从api发送回来的auth cookie上,我有SameSite=None
,它可以在所有其他浏览器上运行,但Safari浏览器中的请求不包含cookie。但是,如果我以隐身方式使用Safari,它是否在请求中包含cookie?我的问题是:
这里是一个更详尽的示例:
front end:
customersdomain.com
api:
api.myapp.com
Cookie
x-refresh: <cookie_val>
SameSite: none
HttpOnly: true
Secure: true
expires: 1 month
domain: api.myapp.com
我的cors还设置了允许凭据,并且在请求中我将credentials
设置为include
。
在Safari 13.1中,为了使第三方请求可以访问凭据/ cookie,必须使用Storage Access API通过iframe请求访问。
这可能会严重影响您应用的运行。请阅读WebKit的recent blog post,以获取有关其智能跟踪防护的最新更改的更多信息。
[在Safari 13.1之前,有一些临时的兼容性修补程序,详细说明为here,以允许第三方请求访问cookie。我的猜测是,第三方域在您的设备上被Safari标记为具有跟踪用户潜力的域,并且默认情况下被阻止访问Cookie。只要您不清除Safari上的缓存,该域就会一直处于阻止状态。通过使用隐身窗口,该会话的域不再被阻止。
SameSite =没有兼容性被添加到Safari 13中,因此这不应该引起您的任何问题。