首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法摆脱标题X-Powered-By:Express

无法摆脱标题X-Powered-By:Express
EN

Stack Overflow用户
提问于 2011-05-03 16:53:38
回答 13查看 46.2K关注 0票数 179

我使用express在nodejs上运行服务器。我似乎不能去掉标题:

代码语言:javascript
运行
复制
X-Powered-By:Express

我想知道是否有任何方法可以摆脱这个头文件,或者我必须接受它?

EN

Stack Overflow用户

发布于 2020-08-16 11:55:01

注释__:答案分散在帖子中,这是一个汇编,外加一些我自己的补充。它们都经过了测试。

备注2__:缺少一些重要的东西:如果你在前端检查头部,使用开发服务器,be Angular,React或webpack开发服务器,你仍然会看到头部。这是因为webpack-dev-server确实是Express服务器,而您看到的是来自该应用程序的头文件。如果使用这些选项之一,您的后端将不会发送标头。

有很多方法可以做到这一点。

默认情况下,

  1. 禁用带有快速选项的"X-powered-by"

代码语言:javascript
运行
复制
import express from 'express'
const app = express()
app.disable('x-powered-by')
// app.use(...)

2)在每次请求时使用中间件将其移除:

  • 删除X-powered-by key

代码语言:javascript
运行
复制
import express from 'express'
const app = express()

app.use(function (req, res, next) {
  res.removeHeader("X-Powered-By");
  next();
});

  • X-powered-by值更改为其他值

代码语言:javascript
运行
复制
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推荐的报头(“这不是灵丹妙药,但它可以帮助您!”)

  • 默认设置(应用所有11个HTTP头)

代码语言:javascript
运行
复制
import express from 'express'
import helmet from 'helmet'
const app = express()

app.use(helmet())

仅删除X-powered-by即可删除

代码语言:javascript
运行
复制
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时调用):

票数 1
EN
查看全部 13 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5867199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档