我使用express在nodejs上运行服务器。我似乎不能去掉标题:
X-Powered-By:Express
我想知道是否有任何方法可以摆脱这个头文件,或者我必须接受它?
发布于 2020-08-16 11:55:01
注释__:答案分散在帖子中,这是一个汇编,外加一些我自己的补充。它们都经过了测试。
备注2__:缺少一些重要的东西:如果你在前端检查头部,使用开发服务器,be Angular,React或webpack开发服务器,你仍然会看到头部。这是因为webpack-dev-server确实是Express服务器,而您看到的是来自该应用程序的头文件。如果使用这些选项之一,您的后端将不会发送标头。
有很多方法可以做到这一点。
默认情况下,
"X-powered-by"
。import express from 'express'
const app = express()
app.disable('x-powered-by')
// app.use(...)
2)在每次请求时使用中间件将其移除:
X-powered-by
keyimport express from 'express'
const app = express()
app.use(function (req, res, next) {
res.removeHeader("X-Powered-By");
next();
});
X-powered-by
值更改为其他值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())
仅删除X-powered-by
即可删除
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时调用):
https://stackoverflow.com/questions/5867199
复制相似问题