【问题标题】:Why is x-powered-by header showing after installing Express helmet?为什么安装 Express 头盔后显示 x-powered-by 标头?
【发布时间】:2020-01-17 08:35:12
【问题描述】:

我有一个使用 webpack 在端口 8080 上运行的 Express 服务器。我按照包文档中的说明安装了helmet

const express = require('express')
const helmet = require('helmet')
const app = express()
app.use(helmet())

然而,当我 npm start 时,我仍然在 localhost 中看到 x-powered-by:Express 标头,并且没有看到 Helmet 应该启用的 dns-prefetch、xss 或其他标头。我多次重新启动服务器,删除了我的构建文件夹,因此它没有被缓存,并且不知道它为什么不工作。任何想法或指示将不胜感激!

【问题讨论】:

  • 某些东西不能正确安装,或者你没有运行你认为的文件,因为我只需要看到正确的效果(比如 x-powered-by 标题被删除)就是 @987654327 @。因此,您向我们展示的代码是正确的。您的项目中还有其他问题。

标签: express helmet.js


【解决方案1】:

您需要像这样显式调用中间件。
const hidePoweredBy = require('hide-powered-by') app.use(hidePoweredBy())

https://expressjs.com/en/advanced/best-practice-security.html

也可以试试

app.disable('x-powered-by')

【讨论】:

  • 谢谢!但是这行不是调用中间件app.use(helmet())吗?您在该文档链接的哪个位置看到 require('hide-powered-by') ?另外,我的问题不仅仅是 x-powered-by,我没有看到 Helmet 应该添加的任何标题......就像 Helmet 根本没有启用一样。
  • 点击我分享的链接后,导航到页面后,搜索头盔使用情况,您会找到头盔带来的所有中间件,但看起来您需要明确配置它们。谢谢
  • 您可以在此页面npmjs.com/package/helmet#how-it-works 上看到hidePoweredBy 默认启用(与许多其他功能一样)。由于其他原因,它不适用于 OP,而不是因为这个。
  • 按照文档同意它应该可以工作,试试 app.use(helmet.noCache())
  • 您也可以尝试在没有 webpack 的情况下使用 express 并检查是否工作正常,可能是 webpack 配置问题。谢谢
猜你喜欢
  • 2021-09-27
  • 1970-01-01
  • 2013-12-28
  • 2011-01-20
  • 2020-11-08
  • 1970-01-01
  • 2021-05-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多