当前位置:  开发笔记 > 编程语言 > 正文

Chrome扩展程序中的Vue.js

如何解决《Chrome扩展程序中的Vue.js》经验,为你挑选了2个好方法。

你有csp版本(Vue.js v1)

符合CSP标准的构建

某些环境(例如Google Chrome Apps)会强制执行内容安全策略(CSP),并且不允许使用新的Function()来评估表达式.在这些情况下,您可以使用符合CSP的构建.

(Vue.js v1)http://v1.vuejs.org/guide/installation.html#CSP-compliant-build

npm install vue@csp --save

"dependencies": {
  "vue": "1.0.26-csp"
}

新版本(Vue.js v2)https://vuejs.org/v2/guide/installation.html#CSP-environments

某些环境(例如Google Chrome Apps)会强制执行内容安全策略(CSP),该策略禁止使用新的Function()来评估表达式.独立构建依赖于此功能来编译模板,因此在这些环境中无法使用.

但是有一个解决方案.在使用Webpack + vue-loader或Browserify + vueify的构建系统中使用Vue时,您的模板将被预编译为渲染函数,这些函数在CSP环境中完美运行.



1> davland7..:

你有csp版本(Vue.js v1)

符合CSP标准的构建

某些环境(例如Google Chrome Apps)会强制执行内容安全策略(CSP),并且不允许使用新的Function()来评估表达式.在这些情况下,您可以使用符合CSP的构建.

(Vue.js v1)http://v1.vuejs.org/guide/installation.html#CSP-compliant-build

npm install vue@csp --save

"dependencies": {
  "vue": "1.0.26-csp"
}

新版本(Vue.js v2)https://vuejs.org/v2/guide/installation.html#CSP-environments

某些环境(例如Google Chrome Apps)会强制执行内容安全策略(CSP),该策略禁止使用新的Function()来评估表达式.独立构建依赖于此功能来编译模板,因此在这些环境中无法使用.

但是有一个解决方案.在使用Webpack + vue-loader或Browserify + vueify的构建系统中使用Vue时,您的模板将被预编译为渲染函数,这些函数在CSP环境中完美运行.



2> Haibara Ai..:

我猜你正在使用像new Vue(...)你的实现中的代码,正如这个问题所说的那样.

请注意默认情况下,CSP在chrome扩展,eval和相关功能被禁用.

像以下代码不起作用:

alert(eval("foo.bar.baz"));

window.setTimeout("alert('hi')", 10);

window.setInterval("alert('hi')", 10);

new Function("return foo.bar.baz");

所以解决方案就是

1.放宽默认政策.

根据Evaluated JavaScript的描述,

针对EVAL)政策(及其亲属一样setTimeout(String),setInterval(String)以及new Function(String)可以通过添加适当放宽'unsafe-eval'到您的策略:

"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"

但是,该指南还提到,

我们强烈建议不要这样做.这些函数是臭名昭着的XSS攻击向量.

2.使用符合CSP的构建.(推荐)

正如Vue.js的安装页面所说,

某些环境(例如Google Chrome Apps)会强制执行内容安全策略(CSP),并且不允许使用它new Function()来评估表达式.在这些情况下,您可以使用符合CSP的构建.

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有