Rest 对HTTP头使用百分比编码是否合适或必要?
当我构建RESTful客户端和服务器时,与HTTP头(请求或响应)一起使用是合适的还是必要的,还是这种类型的编码只适用于URI?因为当我搜索这个问题时,这个问题出现在顶部,因为这个问题并没有具体回答关于百分比编码的问题,所以我试图简明扼要地回答OP的问题,尽管它已经有些过时了: 基本上没有,但见下文 仅描述URI的百分比编码(搜索Rest 对HTTP头使用百分比编码是否合适或必要?,rest,http,Rest,Http,当我构建RESTful客户端和服务器时,与HTTP头(请求或响应)一起使用是合适的还是必要的,还是这种类型的编码只适用于URI?因为当我搜索这个问题时,这个问题出现在顶部,因为这个问题并没有具体回答关于百分比编码的问题,所以我试图简明扼要地回答OP的问题,尽管它已经有些过时了: 基本上没有,但见下文 仅描述URI的百分比编码(搜索%或十六进制或百分比),并定义字段值,但不提及百分比编码 但是,RFC2616允许在头字段值中使用仲裁八位字节(除了CTLs),并且对于ISO-8859-1中未包含的字
%
或十六进制
或百分比
),并定义字段值
,但不提及百分比编码
但是,RFC2616允许在头字段值中使用仲裁八位字节(除了CTL
s),并且对于ISO-8859-1中未包含的字符,RFC2616有一个提及MIME编码(RFC2047)的半成品语句(请参见its中文本的定义)。我将该语句称为“半生不熟”,因为它没有明确说明ISO-8859-1是用于解释八位字节的强制字符集,但尽管如此,它规范地要求对该字符集之外的字符使用MIME编码。似乎ISO-8859-1的使用和头字段值的MIME编码都没有得到广泛支持
HTTPbis似乎已经放弃了这一点,并返回US-ASCII以获取标题字段值。有关详细信息,请参阅
我的理解是:
- 对于标准标头字段(RFC2616中定义的字段),不允许使用百分比编码
- 对于扩展标题字段,RFC2616中没有描述百分比编码,但是可以应用所有类型的编码,包括百分比编码,只要生成的字符是US-ASCII(如果您希望成为未来的证明)。只是不要认为你必须使用百分比编码
我找到了更多的信息来源:
- 确认了我的理解,尽管它没有具体说明标准头和扩展头,也没有引用源代码
- 认为产品中扩展头的编码百分比是防止CSS攻击的一种措施
TL;DR:八位字节百分比编码和base64编码都可以
指示HTTP标头字段参数的字符编码和语言
本文档指定了适合在HTTP标头中使用的编码
字段
阅读“3.2.3.示例”
base64编码也不错,请阅读HTTP Basic Authorziation规范:自己看看,RFC 2616是http协议最重要的定义:可能重复的可能重复,将其标记为目前公认的答案,因为它相当简洁地回答了这个问题。请注意,所有这些仅适用于专门允许此类转义机制的头字段。