如何在不使用不安全的内联JavaScript/CSS代码的情况下使用React?
- 论坛
- 如何在不使用不安全的内联JavaScript/CSS代码的情况下使用React?
15 浏览
如何在不使用不安全的内联JavaScript/CSS代码的情况下使用React?
背景
我需要在一个React应用中使用内容安全策略(Content Security Policy)。
这里的原因并不重要,主要是因为我正在创建一个Web扩展程序/Browser扩展程序/插件,而这些程序需要使用内容安全策略(content security policy),其中像'unsafe-eval'
和'unsafe-inline'
这样的内容是被严格禁止的:
在addons.mozilla.org上列出的扩展程序中,使用'unsafe-eval'、'unsafe-inline'、远程脚本、blob或远程源的CSP是不被允许的,因为存在严重的安全问题。
我是根据这个指南使用create-react-app
创建的应用程序。
目标是能够在那里使用React的默认CSP,或者至少只需进行一些小的调整。
然而请注意,出于安全原因,(如此严格的)CSP实际上也应该用于"普通"网站,所以这个问题不仅仅是针对插件制的。
问题
但是当我运行npm run build
时,生成的index.html
中包含了足够多的内联JS代码。
问题
那么我该如何配置/使用React来解决这个问题,并且...
- 要么将所有JS/CSS代码放入单独的文件中?
- 要么添加CSP允许的随机值或其他内容?
- 要么用类似的方式解决这个问题?
编辑
实际上,似乎开发版本(在运行npm start
时创建)并没有这样的代码压缩。所以我另外提了一个问题,询问如何从那里获取文件:如何构建非压缩版的React生产版本?