HTTP 请求头的 key 不区分大小写。
详细说明
-
HTTP 协议规范
根据 RFC 7230,HTTP 头字段的名称(即 key)在传输时不区分大小写。例如,Content-Type
和content-type
被视为相同的字段。 -
实际行为
- 客户端行为:大多数 HTTP 客户端(如浏览器、
curl
、axios
等)在发送请求时,通常使用首字母大写的头字段名称(如Content-Type
),但这是惯例而非强制要求。 - 服务器行为:服务器在解析请求头时,会将头字段名称转换为小写(或等效的不区分大小写形式)进行处理。例如,Node.js 的
http
模块会将所有头字段名称存储为小写。
- 客户端行为:大多数 HTTP 客户端(如浏览器、
-
示例
假设客户端发送以下请求头:GET / HTTP/1.1 Host: example.com custom-Header: value1 CuStOm-HeAdEr: value2
服务器会将
custom-Header
和CuStOm-HeAdEr
视为同一个字段,并可能合并它们的值(具体行为取决于服务器实现)。 -
注意事项
- 避免重复字段:虽然大小写不敏感,但重复的字段名称可能导致服务器覆盖或合并值。例如,
Custom-Header: value1
和custom-header: value2
可能会被合并为Custom-Header: value2
(取决于服务器)。 - 一致性:为了代码可读性和维护性,建议统一使用首字母大写的头字段名称(如
Content-Type
)。
- 避免重复字段:虽然大小写不敏感,但重复的字段名称可能导致服务器覆盖或合并值。例如,
总结
- 请求头 key 不区分大小写,但建议遵循惯例使用首字母大写。
- 服务器在处理请求头时,会将字段名称转换为统一格式(如小写)进行处理。
- 避免使用重复的字段名称,即使大小写不同,也可能导致意外行为。