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

我在页面加载时使用CAPTCHA,但由于某些安全原因,它被阻止了。

我正面临这个问题:

    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'").

我使用了以下JavaScript和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>

答案 1

您说过您只能从自己的站点(自身)加载脚本。然后,您尝试从另一个站点加载脚本(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都非常宽松(允许,和a的),因此老实说,它可能不会增加太多价值。unsafe-inlineunsafe-evaldefault-src*


答案 2

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

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

在 Chrome 中,错误消息改为:

无法加载资源:服务器以状态 404 () 进行响应

在我的情况下,它与我的内容安全策略无关,而只是我TypeScript错误的结果。

检查 IDE 输出窗口中是否有 TypeScript 错误,例如:

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

注意:由于此问题是Google上此错误消息的第一个结果。