Javascript iframe中的Safari和Cookie

Javascript iframe中的Safari和Cookie,javascript,cookies,Javascript,Cookies,默认情况下,Safari浏览器会阻止第三方cookie 我有一个站点A(主站点),在iframe中加载站点B(框架站点)。站点B设置一些cookie(当用户单击按钮时)以正常工作。这些cookie称为第三方cookie,因为它们不是由站点A设置的 所以我找到了这个解决方案: 但在我的例子中,它不起作用,因为要设置cookie,用户首先必须单击一个按钮 framed.html实际上是这样的: <!DOCTYPE html> <html> <head> &

默认情况下,Safari浏览器会阻止第三方cookie

我有一个站点A(主站点),在iframe中加载站点B(框架站点)。站点B设置一些cookie(当用户单击按钮时)以正常工作。这些cookie称为第三方cookie,因为它们不是由站点A设置的

所以我找到了这个解决方案:

但在我的例子中,它不起作用,因为要设置cookie,用户首先必须单击一个按钮

framed.html实际上是这样的:

<!DOCTYPE html>
<html>
<head>
    <title>Framed Page</title>
</head>
<body style="background-color: lightcoral;">
<h2>This is the framed site</h2>

<div border="0" class="cookie_button" id="continue_button" onclick="SetCookie('cookieAcceptanceCookie','accepted',9999);">accept</div>
</body>
</html>

框架页
这是一个框架网站
接受

我的问题有解决方案吗?

唯一对我有效的解决方法是通过iframed域重定向一次

因此,如果您有abc.com,并且xyz.com是abc.com下的iframe,那么在登录abc.com时,需要通过xyz.com进行中间重定向,仅用于设置空白cookie。然后Safari将允许从iframe为xyz.com设置cookie

我不确定是否还有其他更好的解决办法。然而,这起了作用,达到了我的目的


谢谢。

Safari现在会阻止所有第三方cookie。您只能使用存储API尝试让用户访问其第三方cookie


“但在我的情况下,它不起作用,因为要设置cookie,用户首先必须单击按钮。”-这到底是如何阻止您执行与那篇文章中所述相同的操作…?无论您是自动重定向到另一个域,还是仅在单击发生时才执行此操作-有什么区别?如果您担心它会过多地中断流,那么您要么需要提前执行此操作(即使用户后来对该功能不感兴趣),要么可以通过弹出窗口执行此操作。“作为第一方”访问第三方域是这里的重要内容;无论是通过当前窗口中的重定向,还是在外部上下文(如弹出窗口)中重定向,都不重要。(弹出窗口拦截器在特定情况下是否会给你带来更多麻烦可能是另一个问题。)你救了我一天。它在safari 13+上不再工作了。不管怎样,它阻止了cookies。你现在找到这个问题的解决方案了吗?请共享示例代码。是的,Safari 13.1.1阻止了这种方法。