Safari:无法识别的内容安全策略指令“frame-ancestors”

dan*_*iel 3 php safari meta .htaccess content-security-policy

我有一个应用程序 siteA.com,它加载到 siteB.com 内的 iframe 中。直接加载 siteA.com 时没有警告,但在 siteB.com 的 iframe 内时出现无法识别的内容安全策略指令“frame-ancestors” ;这仅在 Safari 中。

所有这些更改均在 siteA.com 中进行

元标记没有运气

<meta http-equiv="Content-Security-Policy" content="frame-ancestors siteB.com">
Run Code Online (Sandbox Code Playgroud)

我应该向 siteA.com 添加哪些标头以允许 Content-Security-Policy 指令框架祖先?

然后我尝试在主index.php中添加头部:

header("Content-Security-Policy: frame-ancestors 'self' siteB.com;");
Run Code Online (Sandbox Code Playgroud)

但仍然可以在 siteA 中工作,但不能在 siteB 中工作。

还添加到*.htaccess*

Header set Content-Security-Policy "frame-ancestors: siteB.com"
Run Code Online (Sandbox Code Playgroud)

但什么也没有。由于问题在 Safari 中出现,因此也尝试过

header("X-Frame-Options: ALLOW-FROM siteB.com");
Run Code Online (Sandbox Code Playgroud)

但这甚至会给出错误。

好的一点是,如果框架祖先 url 不正确,它根本不会在任何其他测试的浏览器中加载。

我究竟做错了什么?

Ben*_*cka 8

无法识别的内容安全策略指令“frame-ancestors”

这是浏览器级别的错误,您无法修复它。您使用的是 Safari 9 或更旧版本吗?Safari 仅支持在Safari 10frame-ancestors中启动。该错误还意味着浏览器忽略了对它来说无效的指令,它不知道如何处理。它不应该对您的网站产生超出该指令不存在时通常会发生的负面影响。并非所有控制台错误都需要采取措施。

当使用内容安全策略等内容时,一些较旧的浏览器根本不会支持所有功能。由于渐进增强的概念,您仍然应该实现它们。

请注意,坦率地说,Safari 基本上是新的 IE,在对标准(尤其是旧版本)的支持方面落后。不要期待前沿的支持,但也不要因此而害怕实现新功能。与 IE 不同的是,safari 确实迎头赶上,而且这些缺失的功能不会像以前那样完全破坏网站。不仅仅是 Safari,Firefox 有时会先于 Chrome 获得一些东西,等等。