Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角5&;CSP-拒绝将字符串作为JavaScript求值,因为';不安全评估';不是允许的脚本源_Angular_Content Security Policy - Fatal编程技术网

Angular 角5&;CSP-拒绝将字符串作为JavaScript求值,因为';不安全评估';不是允许的脚本源

Angular 角5&;CSP-拒绝将字符串作为JavaScript求值,因为';不安全评估';不是允许的脚本源,angular,content-security-policy,Angular,Content Security Policy,我目前正在尝试将内容安全策略引入到使用Angular 5构建的应用程序中。我目前正在使用index.html中的meta标记来实现CSP,不过我将来会对此进行更改。我已将以下内容插入我的应用程序 <meta http-equiv="Content-Security-Policy" content="script-src 'self'; img-src 'self' data:;media-src 'self'; object-src 'self' data: 'unsafe-eval';

我目前正在尝试将内容安全策略引入到使用Angular 5构建的应用程序中。我目前正在使用index.html中的
meta
标记来实现CSP,不过我将来会对此进行更改。我已将以下内容插入我的应用程序

<meta http-equiv="Content-Security-Policy" content="script-src 'self'; img-src 'self' data:;media-src 'self'; object-src 'self' data: 'unsafe-eval'; style-src 'self' https://fonts.googleapis.com 'unsafe-inline';">

这基本上满足了我的需求,但是当我部署到测试服务器时,浏览器控制台会给我以下消息:

Uncaught EvalError:拒绝将字符串作为JavaScript求值,因为 “不安全评估”不是以下脚本中允许的脚本源 内容安全策略指令:“脚本src'self'”

好的,我需要将
'safe-eval'
添加到
脚本src
指令中。这不是一个真正的问题,但它确实让我担心,记住eval()是邪恶的

对于希望使用CSP的Angular 5应用程序,是否必须在指令
脚本src
中包含
'safe-eval'
?是否有办法保留安全功能,防止使用
eval()
?是否有必要将其作为角度使用纳入
eval()
。我假设contentsecuritypolicy元标记的内容是正确的,尽管我确信可能不是这样

我在angular github上读到这个问题,但我不确定这个问题是否与我有关,因为我在应用程序中使用的不是SystemJS而是webpack


非常感谢您提供的帮助、答案和建议。

我也遇到了同样的问题,我注意到在--prod模式下运行不会出现错误(我使用的是Angular 8)

根据您的设置,您可以使用客户端响应头来实现安全策略,因为这不会导致此错误

如果您的问题只与在调试模式下运行(使用元标记)有关,那么这不是您的解决方案