Safari:无法识别 Content-Security-Policy 指令 'frame-ancestors'

Safari: Unrecognized Content-Security-Policy directive 'frame-ancestors'

我有一个应用程序 siteA.com 加载到 siteB.com 内的 iframe 中。 没有警告直接加载 siteA.com 但在 siteB.com 中的 iframe 内时得到 Unrecognized Content-Security-Policy 指令 'frame-ancestors';这仅在 Safari 中。

所有这些更改都是在 siteA.com

中进行的

Meta 标签 运气不好

<meta http-equiv="Content-Security-Policy" content="frame-ancestors siteB.com">

我应该向 siteA.com 添加什么 headers 以允许 Content-Security-Policy 指令 frame-ancestors?

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

header("Content-Security-Policy: frame-ancestors 'self' siteB.com;");

但仍在站点 A 而不是站点 B 中工作。

也添加到 * .htaccess *

Header set Content-Security-Policy "frame-ancestors: siteB.com"

但什么也没有。 由于问题在 Safari 中不断增加,因此也尝试了

header("X-Frame-Options: ALLOW-FROM siteB.com");

但这甚至会出错。

好的部分是,如果 frame-ancestors url 不正确,它根本不会在任何其他经过测试的浏览器中加载。

我做错了什么?

Unrecognized Content-Security-Policy directive 'frame-ancestors'

这是浏览器级错误,您无法修复。您使用的是 Safari 9 或更早版本吗? Safari 仅支持从 Safari 10 开始的 frame-ancestors。该错误还仅仅意味着浏览器忽略了对它来说是无效的指令,它不知道该怎么做。如果该指令不存在,它不应该对您的网站产生超出正常情况的负面影响。并非所有控制台错误都需要处理。

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

请注意,坦率地说,Safari 基本上是新的 IE,因为它落后于对标准的支持,尤其是旧版本。不要指望前沿支持,但不要因此而害怕实现新功能。与 IE 不同的是,safari 确实迎头赶上,这些缺失的功能并没有像过去那样完全破坏网站。不仅仅是 Safari,Firefox 有时会在 Chrome 之前得到东西,等等