如何在 nextjs 自定义服务器中删除 x-powered-by header

How to remove x-powered-by header in nextjs custom server

我正在使用 Next 创建 Web 应用程序,我想从响应 header 中删除 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}`)
  })
})

嗯,如果你不想 return 这个 header 你只需要写

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

所以你需要写

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

在终点

以下代码有效。您在此处所做的正确操作是从 Express 中删除 X-Powered-By header。因为您正在使用 Next,所以您需要禁用 Next 和 Express X-Powered-By header。

我没有从 Next 中找到 api 来禁用。但是可以直接改objectapp.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}`)
  })
})

对我来说,当我使用 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 })

现在很简单

默认情况下 Next.js 将添加 x-powered-by header。对于其中的 opt-out,打开 next.config.js 并禁用 poweredByHeader 配置:

module.exports = {
  poweredByHeader: false,
}

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