未捕获的 EvalError:拒绝将字符串计算为 JavaScript,因为“unsafe-eval”不是以下内容安全策略指令中允许的脚本源:“script-src 'unsafe-inline'”。
我在使用 HTTP 标头加载handlebar.min.js 时遇到错误,Content-Security-Policy 为 script-src 'self' 'unsafe-inline'。
我不想在 script-src 中使用“unsafe-eval”,其中handlebar.min.js 需要 unsafe-eval 才能继续
似乎js使用了以下函数,需要unsafe-eval才能运行
>> f(Function.call,k)
>> Function.apply(this,["fn","props","container","depth0","data","blockParams","depths",this.decorators.merge()])
>> Function.apply(this,f))
我使用的是最新版本的js(版本4.7.8)
https://s3.amazonaws.com/builds.handlebarsjs.com/handlebars.min-v4.7.8.js
提供 HTTP 标头、Content-Security-Policy 作为 script-src 'self' 'unsafe-inline' 'unsafe-eval' 后,它就可以工作了。但我需要在这里删除 unsafe-eval
重新检查车把安装。如果未安装,请安装车把
npm install -g handlebars
也不要进行运行时编译,而是进行预预编译
handlebars template.hbs -f template.js
您可以暂时放松您的 CSP。然而,由于安全风险,这不应该在生产中完成
Content-Security-Policy: script-src 'self' 'unsafe-inline' 'unsafe-eval';