使用NODE JS修复CSP策略

问题描述

我正在使用定制板上的Node JS开发Web应用程序。我使用EJS模板引擎和JQuery。我的应用程序曾经可以运行,但是没有,在固件更新后,我在浏览器控制台Content Security Policy: Couldn’t process unkNown directive ‘script-src-attr’和其他Loading Failed for the <script> with source “https://192.168.1.1:8080/jquery.min.js”.上收到此警告 同样在固件更新之前,我会像这样设置CORS策略:


//Enable CORS for all HTTP methods
app.use(function(req,res,next) {
    res.header("Access-Control-Allow-Origin","*");
    res.header("Access-Control-Allow-Methods","GET,PUT,POST,DELETE,OPTIONS");
    res.header("Access-Control-Allow-Headers","Origin,X-Requested-With,Content-Type,Accept");
    next();
});

这是我的工作目录:

-index.js
-API
   - Routers
   - Models
   - Controllers
-Views
   -Component
-Static
   - JS
   - CSS


我不会使用'cors'npm模块(如果没有必要)。 我尝试更改/ static路径,并尝试更改'res.header(“ Access-Control-Allow-Origin”,“ *”',但我认为这是相当宽松的。任何人都可以帮助我吗?谢谢

解决方法

这不是CORS问题,而是内容安全政策。更新固件后,您在某个地方发布了CSP标头,请尝试查找:

res.header("Content-Security-Policy","... script-src-attr ...");

并删除“ -attr”部分。 Firefox不支持 script-src-attr 指令,它仅支持 script-src 一个。

如果您不需要使用Content-Security-Policy,只需删除此标头即可,因为配置错误的CSP会阻止脚本,样式,字体,图像等。

可能是您的Web服务器发布此标头。检入浏览器开发工具,从服务器获取哪些HTTP标头。