.net 请注意,'frame-src'没有显式设置,因此'default-src'被用作回退

r8xiu3jd  于 2023-06-07  发布在  .NET
关注(0)|答案(1)|浏览(449)

我尝试添加frame-scr,因为它说“注意'frame-src'没有显式设置”:以下是我尝试添加的内容:

frame-src 'self';
frame-src 'self' data:;
frame-src http://example.com/;
frame-src http://* https://*;

仍然错误,我已经改变了框架源代码很多次,并没有任何运气修复错误。
以下是我的Content-Security-Policy:

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。

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.
0yg35tkg

0yg35tkg1#

是的,您必须将frame-src http://example.com;添加到CSP中。
但是:
以下是我的Content-Security-Policy:
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或web-config,则:

Header set Content Security Policy: "...rules..."

它会覆盖CMS发布的CSP。如果:

Header ALWAYS set Content Security Policy: "...rules..."

您将同时拥有两个CSP。
检查哪个CSP实际上正在发送到浏览器,教程在这里。

相关问题