【问题标题】:VUE3 CSP issue at "new Function"“新功能”中的 VUE3 CSP 问题
【发布时间】:2021-10-11 02:11:57
【问题描述】:

我正在将 vue 3.1.5 和 vue cli 4.5.0 用于 chrome 扩展等特殊应用程序并收到以下错误

“拒绝将字符串评估为 JavaScript,因为 'unsafe-eval' 不是以下内容安全策略指令中允许的脚本来源:“script-src chrome://resources 'self'”。

在 runtime-core.esm-bundler.js 中

function compileToFunction(source, options = {}) {
...
   // compile
        const { code } = baseCompile(source, options);
        // evaluate function
        const msg = new Function(return ${code})();
...
}

有没有办法构建兼容 CSP 的 vue3 应用程序?

我已经尝试过这些选项

  • config.resolve.alias.set('vue$', 'vue/dist/vue.esm.js');
  • configureWebpack: { devtool: inline-source-map }
  • configureWebpack: { devtool: false }

还有其他选择吗?或者我错过了什么?

问候, 帕维尔

【问题讨论】:

  • 嗨@se_pavel,你能得到扩展的工作解决方案吗?据我了解,您正在尝试切换到清单 v3。我在 Vue 也遇到了同样的问题,但到目前为止没有找到任何解决方案。

标签: vuejs3 content-security-policy


【解决方案1】:

是的,Vue 使用new Function 进行模板的运行时编译。
如果您不希望在 CSP 中允许 'unsafe-eval',则必须 pre-compile tempaltes into render functions

【讨论】:

  • 您好,谢谢您的链接。我检查了结果 js 文件,发现我的所有模板都已预编译,但带有“new Function”的 JS 代码仍然存在。可能有一些选项,除了现有的模板之外不会有更多的模板
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-03
  • 2020-07-29
  • 1970-01-01
  • 2013-05-09
  • 2021-08-25
  • 2020-11-09
相关资源
最近更新 更多