【问题标题】:How to remove x-powered-by header in nextjs custom server如何在 nextjs 自定义服务器中删除 x-powered-by 标头
【发布时间】:2018-07-14 08:38:27
【问题描述】:

我正在使用 Next 创建一个 Web 应用程序,并且我想从响应标头中删除 x-powered-by,我尝试创建自定义服务器并使用 expressjs .disable('x-powered-by') 但它不起作用。

这是我所做的:

const express = require('express')
const next = require('next')

const port = parseInt(process.env.PORT, 10) || 3001
const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = app.getRequestHandler()


app.prepare()
.then(() => {
  const server = express()
  .use(handle)


  server.disable('x-powered-by'); // ???

  server.listen(port, (err) => {
    if (err) throw err
    console.log(`> Ready on http://localhost:${port}`)
  })
})

【问题讨论】:

  • 为什么?您不想使用此标头返回响应吗?还是在整个请求中?
  • @BasilBattikhi 我想在我的应用程序中隐藏nextjs 版本,目前X-Powered-By:Next.js 4.2.1 标头在所有请求中返回

标签: node.js express nextjs


【解决方案1】:

好吧,如果你不想返回这个标题,你必须简单地写

res.removeHeader('header-name'); //any header that you want to remove

所以你需要写

res.removeHeader('X-Powered-By');

在终点

【讨论】:

  • 这是行不通的,如果我使用 express 并定义我自己的路线你是对的,我可以使用 removeHeader 删除标题,但是当我使用 app.getRequestHandler() 时这不起作用处理请求
【解决方案2】:

以下代码有效。从 Express 中删除 X-Powered-By 标头是正确的。因为您使用的是 Next,您需要禁用 Next 和 Express X-Powered-By 标头。

我没有从 Next 中找到要禁用的 api。不过可以直接改对象app.config.poweredByHeader = false

const express = require('express')
const next = require('next')

const port = parseInt(process.env.PORT, 10) || 3001
const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = app.getRequestHandler()

app.config.poweredByHeader = false

app.prepare()
.then(() => {
  const server = express().use(handle)

  server.disable('x-powered-by'); // This disables Express Header

  server.listen(port, (err) => {
    if (err) throw err
    console.log(`> Ready on http://localhost:${port}`)
  })
})

【讨论】:

  • 另一种方式是app.set('x-powered-by', false)
【解决方案3】:

对我来说,当我使用server.disable('x-powered-by'); 时,最终以Next.js 7.0.2 作为x-powered-by 值。

next.config.js 中添加以下行应该可以工作

module.exports = {
    poweredByHeader: false,
    ...
}

const app = next({ dev, xPoweredBy: false })

【讨论】:

    【解决方案4】:

    现在很简单。

    默认情况下 Next.js 将添加 x-powered-by 标头。要退出它,请打开 next.config.js 并禁用 poweredByHeader 配置:

    module.exports = {
      poweredByHeader: false,
    }
    

    见 - https://nextjs.org/docs/api-reference/next.config.js/disabling-x-powered-by

    【讨论】:

      猜你喜欢
      • 2021-05-06
      • 2011-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多