Lyu*_*ski 5 iframe header http content-security-policy
我有一个网络应用程序,我想在具有不同域的网络应用程序的 iframe 中显示它。由于我添加了一个 content-security-policy 标头,我的应用程序拒绝在 iframe 中显示。我看到我需要添加 frame-ancestors 选项,但我看到的所有示例都使用特定域。我怎样才能允许它用于所有域?是“框架祖先*;” 足够的?谢谢!
简而言之 - 是的,*允许 iframe 的任何来源,除了data:.
请注意,元标记中不支持帧祖先 (但看起来您使用 HTTP 标头来传递 CSP,因此这不适合您)。<meta http-equiv='Content-Security-Policy' content="...">
但是如果你真的希望允许所有框架祖先 - 更可靠的是根本不指定frame-ancestors指令,因为现在 Mozilla Firefox 有一些错误。
PS:您没有在浏览器控制台中附加错误的打印屏幕 - 可能是 iframe 被 CSP 之外的其他原因阻止了?
在公开 CSP 详细信息后更新
<html>
parent page issues CSP: default-src 'self';
since frame-src omitted, it fallback to default-src and result be: frame-src 'self'
<iframe src=''></iframe>
</html>
Run Code Online (Sandbox Code Playgroud)
允许 iframe 与scheme://host:port父页面加载相同。'self' 很棘手,因为如果父级通过 HTTP: 加载,通过 HTTPS: 加载的 iframe 将在 CSP2 浏览器中被阻止。CSP3 浏览器会升级(见第 3 段)HTTP: 到 HTTPS:,所以一切正常。
如果父页面发布frame-ancestors *策略,则意味着您允许将其嵌入到任何其他网页的 iframe 中。
X-Frame-Options HTTP 标头提供相同的功能,但如果发出 frame-ancestor ,它会被覆盖。
<iframe>嵌入到发布此 CSP 的页面中。它会影响允许嵌入此页面的位置。<iframe>可以发布自己的 CSP 规则frame-ancestors domain1.com domain2.com来限制它嵌入到其他网页。这就是它的工作原理。您可以使用框架祖先的测试来阐明不同<iframe src=/srcdoc=.
因此,如果您从自己的域/子域嵌入 iframe,使用起来更安全:
frame-ancestors 'self';
或者如果您使用子域:
frame-ancestors http://example.com https://example.com http://*.example.com https://*.example.com;
| 归档时间: |
|
| 查看次数: |
8243 次 |
| 最近记录: |