【问题标题】:Note that 'frame-src' was not explicitly set, so 'default-src' is used as a fallback请注意,'frame-src' 没有明确设置,所以 'default-src' 用作后备
【发布时间】:2021-03-22 04:09:13
【问题描述】:

我尝试添加 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】:

    是的,您必须将 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 或 web-config :

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

    它会覆盖 CMS 发布的 CSP。在以下情况下:

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

    您将同时拥有 2 个 CSP。

    检查实际上是哪个 CSP 被传送到浏览器,教程是here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-16
      • 2017-03-09
      • 2021-05-18
      • 2021-11-23
      • 2018-11-06
      • 2012-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多