我尝试添加frame-scr,因为它说“请注意,未明确设置'frame-src'”: 这是我尝试添加的内容:
frame-src 'self';
frame-src 'self' data:;
frame-src http://example.com/;
frame-src http://* https://*;
仍然有错误,我已经多次更改了frame-src,但没有任何运气修复该错误。
这是我的内容安全政策:
default-src 'self' data: ; object-src 'none'; frame-ancestors 'self'; sandbox allow-forms allow-same-origin allow-scripts; base-uri 'self';"
这是我的 HTML :
<div id="main">
<a href="" id="link">Click me</a><br>
</div>
<div id="popup"><iframe id="popupiframe"></iframe></div>
<div id="popupdarkbg"></div>
这是我的JS:
document.getElementById("link").onclick = function (e) {
e.preventDefault();
document.getElementById("popupdarkbg").style.display = "block";
document.getElementById("popup").style.display = "block";
document.getElementById('popupiframe').src = "http://example.com/";
document.getElementById('popupdarkbg').onclick = function () {
document.getElementById("popup").style.display = "none";
document.getElementById("popupdarkbg").style.display = "none";
};
return false;
}
window.onkeydown = function (e) {
if (e.keyCode == 27) {
document.getElementById("popup").style.display = "none";
document.getElementById("popupdarkbg").style.display = "none";
e.preventDefault();
return;
}
}
当我单击按钮/文本时,我遇到此错误,将触发 iframe,该 iframe 将在 iframe 中显示另一个网站。
Refused to frame 'http://example.com/' because it violates the following Content Security Policy directive: "default-src 'self' www.gravatar.com fonts.googleapis.com fonts.gstatic.com". Note that 'frame-src' was not explicitly set, so 'default-src' is used as a fallback.
是的,您必须将
frame-src http://example.com;
添加到您的 CSP 中。这是我的内容安全政策:
default-src 'self' data: ; object-src ...
您从控制台错误中显示的 CSP 与实际策略不匹配:
我遇到这个错误...:
Refused to frame 'http://example.com/' because it violates the following Content Security Policy directive: "default-src 'self' www.gravatar.com fonts.googleapis.com fonts.gstatic.com".
您编辑的 CSP 似乎未发布或已被覆盖。例如,如果 CSP 由某些 CMS 插件发布并且同时在
.htaccess
文件中,则可能会发生这种情况。
如果您有
.htaccess
或网络配置:
Header set Content Security Policy: "...rules..."
它覆盖 CMS 发布的 CSP。如果是:
Header ALWAYS set Content Security Policy: "...rules..."
您将同时拥有 2 个 CSP。
检查哪个 CSP 实际上被传递到浏览器,教程在这里。