javascript - 内容安全策略阻止所有 CDN
问题描述
我只是想用 Node.js 做一个简单的网站,但是我无法在不受内容安全策略阻止的情况下从 Bootstrap 获取 CSS 和 JS 文件的 CDN。
这是发生的事情:
- 案例 1(有效):当我在浏览器中移动我的 HTML 文件(所以 C://... .html)时,它可以工作并获取所有 CDN
- 案例 2(不起作用):当我在 Node.js 中启动我的服务器(使用 express)然后转到 localhost:4000 时,由于内容安全策略,它没有获得 CDN(我可以在控制台中看到它为它说它被它阻止了)
我试图从这里放入带有 CDN 的元标记:内容安全策略:页面的设置阻止了资源的加载,但它不起作用,我什至遇到了更多错误。
我该如何解决?我找不到任何解决方案。
解决方案
案例 1(有效):当我在浏览器中移动我的 HTML 文件(所以 C://... .html)时,它可以工作并获取所有 cdn
当您的网页从C://... .html
它开始工作时,没有发布任何内容安全策略 (CSP),因此没有任何内容被阻止。
案例 2(不起作用):当我在 Node.js 中启动服务器(使用 express)然后转到 localhost:4000 时,由于内容安全策略,它没有获得 CDN(我可以在控制台中看到它)说它被它阻止了)
当您的网页从服务器工作时,会发布localhost:4000
一个默认 CSP。NodeJS 在依赖项中有一个发布此默认 CSP 标头的 Helmet 中间件。
您可以禁用中间件:
// This disables the `contentSecurityPolicy` middleware but keeps the rest.
app.use(
helmet({
contentSecurityPolicy: false,
})
);
或将其配置为允许外部 CDN,请参阅helmet.contentSecurityPolicy(options)部分中的详细信息。
注意:下次请在问题中添加控制台消息,它们在 CSP 的情况下会非常有帮助。
推荐阅读
- javascript - 如何计算日期时差?
- android - 如何在 react native 0.60-RC 中生成签名的 apk
- c++ - 无法推导出函数参数的非类型模板参数
- sql - 如何使用powershell从excel中获取数据并从SQL中选择
- python - Scrapy 从网页中获取旧文本
- ios - Swift 错误说`Instance member * cannot be used on type
- redis - 如何在 Redis 流中使用背压?
- python - BeautifulSoup 通配符搜索?
- marklogic - 精确匹配失败时自定义 noextract 匹配的 Marklogic Smart Mastering 选项
- c# - 如何将一些对象添加/附加到对象数组中