为了账号安全,请及时绑定邮箱和手机立即绑定

为什么HTTP服务器禁止在HTTP标头名称中使用下划线

为什么HTTP服务器禁止在HTTP标头名称中使用下划线

一只甜甜圈 2019-10-19 16:29:29
几个月前,我遇到了一个名为“ SESSION_ID”的自定义HTTP标头的问题,该标头未被nginx代理传输。有人告诉我,根据HTTP协议的RFC,下划线是禁止的。谷歌搜索,我发现大多数服务器(如apache或nginx)将它们定义为非法。RFC2616第4.2节说遵循与RFC 822 [3.1]第3.1节中给出的通用格式相同的通用格式和RFC822说字段名称必须由可打印的ASCII字符组成(即,值介于33和126之间的字符,十进制,冒号除外)下划线是ASCII表中的95个十进制字符(属于33-126范围)。我想念什么?
查看完整描述

2 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

他们不是被禁止的。这是CGI的遗产。这里


如果未显式设置underscores_in_headers on;,nginx会静默删除带下划线的HTTP标头(根据HTTP标准完全有效)。这样做是为了避免将标头映射到CGI变量时出现歧义,因为在此过程中,短划线和下划线都映射到了下划线。


查看完整回答
反对 回复 2019-10-19
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

标头字段中可以使用下划线(RFC 7230,第3.2节),但实际上并不常见。


查看完整回答
反对 回复 2019-10-19
  • 2 回答
  • 0 关注
  • 795 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信