请注意,“frame-src”未明确设置,因此“default-src”用作后备

问题描述 投票:0回答:1

我尝试添加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.
javascript html .net iframe content-security-policy
1个回答
0
投票

是的,您必须将

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 实际上被传递到浏览器,教程在这里

© www.soinside.com 2019 - 2024. All rights reserved.