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

Far*_*baz 5 node.js express nextjs

我正在使用 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}`)
  })
})
Run Code Online (Sandbox Code Playgroud)

Mr.*_*r.7 7

对我来说,当我使用server.disable('x-powered-by');, 时,最终得到了Next.js 7.0.2价值x-powered-by

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

module.exports = {
    poweredByHeader: false,
    ...
}
Run Code Online (Sandbox Code Playgroud)

或者

const app = next({ dev, xPoweredBy: false })
Run Code Online (Sandbox Code Playgroud)


yue*_*you 4

以下代码有效。您在这里所做的操作是正确的,可以从 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}`)
  })
})
Run Code Online (Sandbox Code Playgroud)