javascript—内容安全策略阻止的所有cdn

yzckvree  于 2021-09-23  发布在  Java
关注(0)|答案(2)|浏览(410)

我只是想用node.js创建一个简单的网站,但是如果不被内容安全策略阻止,我无法从引导中获取css和js文件的cdn。
下面是发生的情况:
案例1(有效):当我在浏览器中移动html文件时(所以c://…)。html)它可以工作并获取所有cdn
案例2(不起作用):当我在node.js中启动服务器(使用express),然后转到localhost:4000时,由于内容安全策略,它没有得到cdn(我可以在控制台中看到它,因为它说它被阻止了)
我试着在meta标签中加入cdn,从这里开始:内容安全策略:页面的设置阻止了资源的加载,但它不起作用,我甚至收到了更多的错误。
我该如何解决这个问题?我找不到任何解决办法。

kiz8lqtg

kiz8lqtg1#

案例1(有效):当我在浏览器中移动html文件时(所以c://…)。html)它可以工作并获取所有cdn
当您的网页从 C://... .html 它没有发布内容安全策略(csp),因此没有任何内容被阻止。
案例2(不起作用):当我在node.js中启动我的服务器(使用express),然后转到localhost:4000时,由于内容安全策略,它没有得到cdn(我可以在控制台中看到它,因为它说它被阻止了)
当您的网页从 localhost:4000 服务器发布默认csp。nodejs有一个 Helm 中间件,它发布这个默认的csp头。
您可以禁用中间件:

// This disables the `contentSecurityPolicy` middleware but keeps the rest.
app.use(
  helmet({
    contentSecurityPolicy: false,
  })
);

或者将其配置为允许外部CDN,请参阅helmet.contentsecuritypolicy(选项)部分中的详细信息。
注意:下次请将控制台消息添加到问题中,它们对于csp非常有用。

2guxujil

2guxujil2#

Content Security Policy 反之亦然。cdn需要为您的url提供访问权限以使用其资源,而不是相反。他们必须添加一个带有 access-control-allow-origin 然后设置 * 这意味着任何人都可以使用他们的资源文件,特别是你的域url。
因此,很可能您的url中有输入错误,并且该域不允许localhost获取其js文件。

相关问题