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

时间:2018-02-04 09:10:23

标签: node.js express nextjs

我使用“下一步”创建了一个网络应用,并且我想从响应标头中删除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}`)
  })
})

4 个答案:

答案 0 :(得分:1)

好吧,如果您不想返回此标题,则必须简单地编写

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

所以你需要写

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

答案 1 :(得分:1)

以下代码有效。你在这里做的是正确的从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}`)
  })
})

答案 2 :(得分:1)

现在很简单。

默认情况下,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

答案 3 :(得分:0)

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