You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NestJS中响应自定义全大写请求头?

NestJS 响应头强制全大写解决方案

你遇到的问题根源在于NestJS默认依赖的Express框架,其setHeader方法会自动将响应头名称转换为驼峰格式(比如把X-CUSTOM-HEADER转成X-Custom-Header)。要输出全大写的响应头,需要绕过Express的格式化逻辑,直接操作Node.js原生的HTTP响应对象:

解决方案代码

import { Get, Controller, Res } from '@nestjs/common';
import type { Response } from 'express';

@Controller()
export class AppController {
  @Get()
  async test(@Res() res: Response) {
    // 获取Node.js原生的ServerResponse对象
    const rawResponse = res.getResponse();
    // 直接调用原生方法设置头,绕过Express的格式化
    rawResponse.setHeader('X-CUSTOM-HEADER', 'FOOBAR');
    res.send();
  }
}

原理说明

Express的响应头处理逻辑里,会调用内部的normalizeHeader函数标准化头名称的大小写,而Node.js原生的ServerResponse.setHeader方法不会做任何格式转换,完全保留你传入的头名称大小写。通过获取底层的原生响应对象,就能实现自定义大小写的响应头。

补充:HTTP标准规定响应头名称是大小写不敏感的,绝大多数客户端和服务端都会正确处理不同大小写的头。但如果你的业务场景有严格的大小写要求,这个方案可以满足需求。

内容的提问来源于stack exchange,提问作者Maku

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 09:12:53