繁体   English   中英

如何使用express / node.js配置CSP标头?

[英]How to configure CSP-headers with express/node.js?

我尝试使这些标签在express / node.js环境中工作,但总会以某种方式使它们始终受到内容安全策略的阻止。

我已经尝试过使用多个节点模块,例如express-csp-header或csp-header,但是没有一个能够解决问题。 所以我回到了“正常”声明。

这是我的server.ts脚本的顶部:

app.use((req: any, res: any, next: any) => {
    res.set({
        "Access-Control-Allow-Origin": "*",
        "Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept",
        "Access-Control-Allow-Methods": "GET, POST, PATCH, DELETE, OPTIONS",
        "Content-Security-Policy": "default-src *",
        "X-Content-Security-Policy": "default-src *",
        "X-WebKit-CSP": "default-src *"
    })
    next();
});

通过webpack进行编译,节点运行在本地主机上,端口为3000。

它仅与“ default-src *”或类似内容不兼容。 我什至尝试自行声明每种内容类型,例如

"default-src * 'self' 'unsafe-inline' 'unsafe-eval'; script-src * 'self' 'unsafe-inline' 'unsafe-eval' localhost:*/*"

这是html页面的body标记之后的脚本部分:(将其放置在head部分中也没有任何改变)

<script src="scripts/loginFunctions.js"></script>

可能很重要:squirrelly提供HTML输出(express的模板引擎)

app.get('/', (req: any, res: any) => {
    res.render('login');
})

用meta标签在头部中声明标题也没有用。 我要引用的脚本的原始文件夹由express提供:

app.use(express.static('public'));

奇怪的是,这并不是在我的工作环境中发生的,一切正常。 这是来自浏览器(Firefox 66.0.5)控制台的错误消息:

Loading failed for the <script> with source “http://localhost:3000/scripts/loginFunctions.js”.
Content Security Policy: The page's settings blocked the loading of a resource at http://localhost:3000/scripts/loginFunctions.js ("script-src").
Content Security Policy: The page's settings blocked the loading of a resource at inline ("script-src").

是的,我知道存在的风险,但这会一直在本地运行,即使它有一天会部署……我只是希望在开发过程中一切都运行平稳(或完全运行)。 任何有关如何解决此问题的帮助将不胜感激:)

好的,我终于自己解决了。 这是我的特定问题的答案,以防万一有人遇到相同的问题:

似乎插件NoScript在通过脚本或HTML文件的<meta>标记中应用了阻止标头条目之后添加了阻止标头条目。 禁用它可以解决问题:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM