我正在尝试将内容加载到 IFrame 中,因此我实现了 Content-Security-Policy 标头:
Content-Security-Policy: frame-ancestors http://*.example.com/abc.html.
当我将标题指定为
时,我可以在 iframe 上加载内容Content-Security-Policy: frame-ancestors http://*.example.com/.
但是当我将标题更改为:
Content-Security-Policy: frame-ancestors self http://*.example.com/abc.html.
然后 iframe 上的内容第一次加载,但当我刷新网页时出现以下错误
拒绝在框架中显示
'https://....'
,因为祖先违反了以下内容安全策略指令:
frame-ancestors self http://*.example.com/abc.html.
谁能告诉我为什么刷新页面时出错。 另外,frame-ancestors 是否考虑完整的 URL (
http://*.example.com/abc.html
) 还是仅考虑主机名(如 http://*.example.com
)?
Chrome 浏览器有一个 bug - 它不支持
frame-ancestors
指令中的路径。 Safari 也有同样的错误,并且只有 Firefox 支持此指令中的路径。
因此,对于
frame-ancestors
而不是 http://.example.com/abc.html
,您必须使用 http://.example.com
主机源。如果没有有效的示例,很难确切地知道问题是什么。但根据规范,https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors,可以建议对您的 CSP 进行一些调整: