javascript - 如何在没有不安全的内联 JavaScript/CSS 代码的情况下使用 React?

标签 javascript reactjs create-react-app content-security-policy browser-extension

背景

我必须使用Content Security Policy对于 react 应用程序。

原因是,这在这里不是什么大问题,是我正在创建一个 WebExtension/浏览器扩展/附加组件,并且它们确实有这样一个 content security policy ,像 'unsafe-eval''unsafe-inline'strictly disallowed :

extensions with 'unsafe-eval', 'unsafe-inline', remote script, blob, or remote sources in their CSP are not allowed for extensions listed on addons.mozilla.org due to major security issues.

我已经使用create-react-app创建了应用程序,大致遵循this guide 。 目标是能够在那里使用 React with the default CSP of WebExtensions ,或者至少,只进行微小的调整。

但是请注意,出于安全原因,(如此严格的)CSP 实际上也应该在“正常”网站上使用,因此这个问题不仅仅适用于附加组件制造商。

问题

但是当我运行 npm run build 时,生成的 index.html 确实包含足够多的 inline JS代码。

问题

那么我如何配置/使用react来不这样做......

  1. 要么将所有 JS/CSS 代码放入单独的文件中?
  2. 或者添加公告或 CSP 允许的其他内容?
  3. 或者以类似的方式解决该问题?

编辑

实际上,开发版本(当我运行npm start时创建)似乎没有这样的缩小。所以我问了一个单独的问题,如何从那里获取文件:How to build a production version of React without minification?

最佳答案

实际上thanks to @heyimalex我为我的问题找到了一个非常简单的答案。只需像这样运行构建脚本:

INLINE_RUNTIME_CHUNK=false npm run build

之后,它应该兼容 CSP。

关于javascript - 如何在没有不安全的内联 JavaScript/CSS 代码的情况下使用 React?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55160698/

相关文章:

JavaScript 回调函数

javaScript - 将对象作为函数参数传递

javascript - Three.js - 如何在可点击区域设置回调 - 3 js

javascript - React - 可选择将项目包装在链接中

javascript - 如何使用 es6 过滤对象值

javascript - 尝试使用 Javascript 正则表达式获取一段 "&"分隔文本,无论它是否是最后一个值

javascript - 在单击 Canvas 的位置添加一个点

reactjs - 如何使用 create-react-app 从 Service Worker 中排除某些 url?

javascript - ESlint 抛出错误而不是警告

node.js - 要导入Sass文件,首先需要安装node-sass