从 Nuxt 3 响应标头中删除“X-Powered-By: Nuxt”

mik*_*yaa 1 nuxt.js nuxtjs3

我刚刚升级到 Nuxt 3 的正式版本,并将我的服务器中间件更新为以下内容。但是,我尝试的任何操作都不会删除或覆盖默认的“x-powered-by”标头。我想把它改成别的东西。它总是说x-powered-by: Nuxt

export default defineEventHandler((event) => {
  event.node.res.removeHeader('x-powered-by') // Does not remove the header 
  event.node.res.setHeader('x-powered-by', 'Something Else') // Does not overwrite header
})

Run Code Online (Sandbox Code Playgroud)

这曾经有效,但此方法已被弃用:

import type { IncomingMessage, ServerResponse } from 'http'

export default async (req: IncomingMessage, res: ServerResponse) => {
  res.setHeader('x-powered-by', 'Something Else')
}
Run Code Online (Sandbox Code Playgroud)

Vin*_*lva 7

我能够render:response通过服务器插件使用硝基钩子删除“X-Powered-By”标头:/server/plugins/nitroPlugin.ts

import {RenderResponse} from "nitropack";

export default defineNitroPlugin((nitroApp) => {
    nitroApp.hooks.hook('render:response', (response: RenderResponse) => {
        delete response.headers['X-Powered-By'];
    })
})

Run Code Online (Sandbox Code Playgroud)

  • 从 [nuxt >= 3.1.0](https://github.com/nuxt/nuxt/blob/c552d1b420caaac0184fd5c332ebc55b0b0d77ad/packages/nuxt/src/core/runtime/nitro/renderer.ts#L336) 标头密钥为小写,因此请使用“x-powered-by”代替。 (3认同)