当前位置: 首页 > 知识库问答 >
问题:

如何修复:“拒绝运行JavaScript URL,因为它违反了以下内容安全策略…”

潘鸿文
2023-03-14

有人知道我为什么一直收到这个消息吗?拒绝运行JavaScript URL,因为它违反了以下内容安全策略指令:“default src‘self’”。启用内联执行需要'unsafe inline'关键字、哈希('sha256-…')或nonce('nonce-…')。还请注意,没有显式设置“script src”,因此使用“default src”作为回退。

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width">
        <title>Title</title>
        <script type="text/javascript">
                function checkoutForm() {
                    var inputValue = document.querySelectorAll('.form-control')[0].value;
                    alert('Your input value: ' + inputValue);
                    window.open('/search/' + inputValue);
                }
        </script>
    </head>
    <body>
        <form class="navbar-search navbar-search-dark form-inline mr-3 d-none d-md-flex ml-lg-auto" method="get"
        action="javascript:checkoutForm()">
            <div class="form-group mb-0">
                <div class="input-group input-group-alternative">
                    <div class="input-group-prepend">
                        <span class="input-group-text"><i class="fas fa-search"></i></span>
                    </div>
                    <input class="form-control" placeholder="Search" type="search" value>
                </div>
            </div>
        </form>
    </body>
</html>

共有3个答案

闽鸿宝
2023-03-14

好吧,现在看来直接从html调用javascript代码对谷歌来说是不合适的:

https://developers.google.com/web/fundamentals/security/csp?hl=en#the_meta_tag

因此,您可以执行以下操作:

>

  • 放置内联脚本(

    在该文件中添加以下内容:

    document.addEventListener('DOMContentLoaded', function () {
        document.querySelectorAll('.fa-search')[0].addEventListener('click', checkoutForm);
    });
    

    我建议您添加一个id标记,或添加一个触发搜索的新按钮,并将document.queryselector行替换为:

    document.getElementById('buttonId').addEventListener('click', checkoutForm);
    

    当然,您可以使用JQuery或任何其他框架来实现同样的行为。

    其他内容类似的StackOverflow问题:

    拒绝加载脚本,因为它违反了以下内容安全策略指令

    在上面的链接中,你有另一种方法来解决这个问题,但既然谷歌警告说没关系,我会尽量避免。与您在此处解释的解决方案相同:https://developers.google.com/web/fundamentals/security/csp?hl=en#if_you_absolutely_must_use_it_

    拒绝执行内联事件处理程序,因为它违反CSP。(沙箱)

  • 东方权
    2023-03-14

    请删除下面的行

    javascript:void(0)

    傅树
    2023-03-14

    Form的action属性只能包含URI。参考https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#Attributes

    表单的action属性包含JavaScript代码。

    从您的代码中,我看到您正试图使用JS将搜索关键字附加到URL中。这不是必需的。由于表单的method属性是get,因此在表单提交期间,搜索关键字将自动附加到URL中。

    action属性设置为/search,这将解决您的问题

     类似资料:
    • 我得到了这个错误: 尝试加载mapboxGL地图时。这是我的CSP标签:

    • 问题内容: 当我尝试将我的应用程序部署到5.0.0以上的android系统的设备上时,我一直收到以下错误消息: 07-03 18:39:21.621:D / SystemWebChromeClient(9132):file:///android_asset/www/index.html:第0行:拒绝加载脚本“ http:// xxxxx ”,因为它违反了以下内容安全策略指令:“ script-sr

    • 当我尝试将我的应用程序部署到Android系统高于5.0.0(Lollipop)的设备上时,我不断收到以下错误消息: 07-03 18:39:21.621:D/SystemWebChromeClient(9132):file:///android_asset/www/index.html: 第0行:拒绝加载脚本的http://xxxxx'因为它违反了以下内容安全策略指令:“script src's

    • 因此,在大约1小时内,我的扩展失败了。 我在做我的扩展,它在做我假装的事情。我做了一些更改,由于不喜欢,我删除了它们,现在我的扩展抛出错误: 拒绝应用内联样式,因为它违反了以下内容安全策略指令:“default src‘self’”。请注意,没有显式设置“style src”,因此使用“default src”作为回退。 是什么导致了这个错误? 我在以下方面进行了更改: popup.html po

    • 我尝试通过cryptojs库加密用户数据,并通过ajax发送到服务器,但控制台显示错误: 拒绝加载脚本'https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js',因为它违反了以下内容安全策略指令:脚本-src'自我'https://apis.google.com'不安全评估'。请注意,没有显式设置脚本-src-

    • 我们开始吧:我是谷歌chrome扩展开发的新手,所以请容忍我。 我有一个分机,它给了我以下错误: 拒绝框架'https://api.xxx.jp/',因为它违反了以下内容安全策略指令:"frame-src'自己'https://staticxx.facebook.comhttps://twitter.comhttps://*.twimg.comhttps://5415703.fls.doublec