内容安全策略:页面设置阻止了资源的加载

时间:2016-05-18 11:43:39

标签: javascript jquery content-security-policy

我在页面加载时使用验证码但由于某些安全原因而阻塞

我面临问题:

    Content Security Policy: The page's settings blocked the loading 
    of a resource at 
    http://www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit 
    ("script-src http://test.com:8080 'unsafe-inline' 'unsafe-eval'").

我使用了以下js和meta标签:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
<script src="http://www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit" async defer></script>

7 个答案:

答案 0 :(得分:43)

您说过只能从您自己的网站加载脚本(自我)。然后,您尝试从其他网站(www.google.com)加载脚本,因为您已限制此脚本,所以您不能。这就是内容安全策略(CSP)的重点。

您可以将第一行更改为:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' http://www.google.com">

或者,或者,在您了解有关CSP的更多信息之前,可能需要完全删除该行。无论如何,您目前的CSP非常宽松(允许unsafe-inlineunsafe-evaldefault-src *),所以可能不会增加太多的价值,说实话。

答案 1 :(得分:5)

具有类似的错误类型。首先,我尝试在代码中添加元标记,但它不起作用。

我发现在nginx webserver上你可能有一个安全设置可能会阻止外部代码运行:

#security directives
server_tokens off;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'  https://ajax.googleapis.com  https://ssl.google-analytics.com https://assets.zendesk.com https://connect.facebook.net; img-src 'self' https://ssl.google-analytics.com https://s-static.ak.facebook.com https://assets.zendesk.com; style-src 'self' 'unsafe-inline' https://assets.zendesk.com; font-src 'self' https://fonts.gstatic.com  https://themes.googleusercontent.com; frame-src https://player.vimeo.com https://assets.zendesk.com https://www.facebook.com https://s-static.ak.facebook.com https://tautt.zendesk.com; object-src 'none'";

检查Content-Security-Policy,您可能需要添加源参考。

答案 2 :(得分:1)

我设法允许所有必不可少的网站都带有以下标题:

header("Content-Security-Policy: default-src *; style-src 'self' 'unsafe-inline'; font-src 'self' data:; script-src 'self' 'unsafe-inline' 'unsafe-eval' stackexchange.com");                    

答案 3 :(得分:0)

由于此问题是该错误消息在Google上的第一个结果,因此我将其放在此处。

在Visual Studio 2019中运行我的 ASP.NET Core Angular 项目时,有时我会在Firefox控制台中收到以下错误消息:

  

内容安全政策:该页面的设置阻止以内联方式(“ default-src”)加载资源。

在Chrome中,错误消息改为:

  

无法加载资源:服务器的状态为404()

就我而言,这与我的内容安全策略无关,而仅仅是我自己TypeScript错误的结果。

检查您的IDE输出窗口是否存在TS错误,例如:

> ERROR in src/app/shared/models/person.model.ts(8,20): error TS2304: Cannot find name 'bool'.
>      
> i 「wdm」: Failed to compile.

答案 4 :(得分:0)

通过升级正在使用的Angular版本(从v8-> v9)和TypeScript的版本(从3.5.3->最新)来解决这个问题。

答案 5 :(得分:0)

您可以通过在 htaccess 中添加代码来修复

<IfModule mod_headers.c>
    # Feature-Policy
    Header set Feature-Policy "microphone 'none'"
    # Referrer-Policy
    Header set Referrer-Policy "same-origin"
    # Content-Security-Policy   
    Header set Content-Security-Policy "script-src 'self' 'unsafe-inline' 'unsafe-eval' e.g. https://ajax.googleapis.com https://ssif1.globalsign.com https://malsup.github.io https://seal.globalsign.com https://www.googletagmanager.com https://www.google.com https://www.gstatic.com https://assets.zendesk.com https://chimpstatic.com https://cdn.ywxi.net https://static.hotjar.com https://maxcdn.bootstrapcdn.com https://www.google-analytics.com https://static.zdassets.com https://connect.facebook.net https://script.hotjar.com https://*.livechatinc.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://cdnjs.cloudflare.com https://ajax.googleapis.com;"
    # X-XSS-Protection
    Header set X-XSS-Protection "1; mode=block"
</IfModule>

答案 6 :(得分:-5)

您可以在浏览器中禁用它们。 的火狐

在FireFox地址栏中输入about:config,找到security.csp.enable并将其设为false

<强>铬 您可以安装名为Disable Content-Security-Policy的扩展程序以禁用CSP