将HTTP Headers拼接为单个字符串时应使用哪种分隔符?
HTTP Headers 分隔符选型解决方案
规范允许的合法分隔符选项
根据 RFC 7230(HTTP/1.1 消息语法规范)的明确规定,以下字符不可能出现在合法的HTTP Header 名或值中,可以直接作为分隔符使用:
- CRLF(
\r\n):这是HTTP协议原生的Header行分隔符,合法Header内容中绝对不允许出现未转义的回车(\r)或换行(\n),是兼容性最好、完全符合协议规则的最优选择。 - ASCII 控制字符:除水平制表符(
\t)、空格之外的所有ASCII控制字符(编码范围0x00-0x08、0x0A-0x1F、0x7F)都禁止出现在Header名/值中,其中专门设计的记录分隔符RS(0x1E)、单元分隔符US(0x1F)是非常适合的专用分隔选项。
避坑提示
- 不要选择逗号、分号、竖线、尖括号等可打印字符作为分隔符,这类字符均可能出现在合法Header值中,比如
Link头包含尖括号、Cookie头包含分号、Accept头包含逗号,会导致拆分错误。 - 如果业务场景强制要求使用可打印字符作为分隔符,必须配套转义逻辑:将Header内容中出现的分隔符先做转义处理,拆分后再做反转义还原。
内容的提问来源于stack exchange,提问作者oneCoderToRuleThemAll
相关产品推荐
相关产品推荐

