注意:答案分散在帖子中,这是一个汇编,加上我自己的一些补充。它们都经过测试。
注意 2:缺少一些重要的东西:如果您在前端检查标头,使用开发服务器,是 Angular、React 或 webpack 开发服务器,您仍然会看到标题。这是因为 webpack-dev-server 确实是一个 Express 服务器,而您看到的是该应用程序提供的标头。如果使用这些选项之一,您的后端将不会发送标头。
有很多方法可以做到这一点。
- 默认使用 Express 选项禁用
"X-powered-by"。
import express from 'express'
const app = express()
app.disable('x-powered-by')
// app.use(...)
2)使用中间件在每个请求上将其删除:
import express from 'express'
const app = express()
app.use(function (req, res, next) {
res.removeHeader("X-Powered-By");
next();
});
import express from 'express'
const app = express()
app.use(function (req, res, next) {
res.header("X-powered-by", "not-Express")
next()
})
3) 使用helmet 将其删除,同时配置10 个其他HTTP 推荐标头(“这不是灵丹妙药,但它可以提供帮助!”)
import express from 'express'
import helmet from 'helmet'
const app = express()
app.use(helmet())
import express from 'express'
import helmet from 'helmet'
const app = express()
app.use(helmet.hidePoweredBy());
与“注2”相关:
如果您使用 webpack-dev-server 进行热重载,您仍然会看到此标头。那是因为它使用的是 express 服务器,所以标头来自它,而不是来自您正在配置的后端 Express。
即使没有设置 webpack-dev-server,主要前端框架中使用的一些样板工具(如 crate-react-app)仍然会在后台使用 webpack-dev-server。
例如,如果您在 CRA 中检查 start 脚本(在执行“npm start”时被调用):