【问题标题】:Safari: Unrecognized Content-Security-Policy directive 'frame-ancestors'Safari:无法识别的内容安全策略指令“框架祖先”
【发布时间】:2018-06-05 11:01:24
【问题描述】:

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

所有这些更改都是在 siteA.com 中进行的

元标记没有运气

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

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

然后我尝试在主 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 不正确,它根本不会在任何其他经过测试的浏览器中加载。

我做错了什么?

【问题讨论】:

    标签: php .htaccess safari meta content-security-policy


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-10-31
      • 1970-01-01
      • 2019-05-09
      • 2016-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-22
      • 1970-01-01
      相关资源
      最近更新 更多