使用HTTP标头的百分比编码是否合适或必要?

时间:2014-04-22 09:11:51

标签: rest http

当我构建RESTful客户端和服务器时,使用percent-encoding和HTTP标头(请求或响应)是否合适或必要,或者这种类型的编码是否只适用于URI?

2 个答案:

答案 0 :(得分:2)

因为当我搜索到这个问题时,这个问题出现在顶部,并且因为问题HTTP header should use what character encoding?没有具体回答关于百分比编码的问题,我试着简洁地回答OP的问题,即使它已经有一些年龄了:

基本上没有,但见下文。

RFC2616仅针对URI(搜索%HEX HEXpercent)描述了百分比编码,并且定义了field-value而未提及百分比编码

但是,RFC2616允许头字段值中的任意八位字节(CTL s除外),并且对于不在ISO-8859-1中的字符有一个提到MIME编码(RFC2047)的半生不熟的语句(参见定义其Section 2.2中的TEXT。我把这句话称为“半生不熟”,因为它没有说明ISO-8859-1是用于解释八位字节的强制字符集,但尽管如此,它规范地要求对外面的字符使用MIME编码那个字符集。看来,ISO-8859-1的使用和标题字段值的MIME编码都没有得到广泛支持。

HTTPbis似乎放弃了这一点,并返回到US-ASCII表示头字段值。有关详细信息,请参阅this answer

我对此的解读是:

  • 对于标准标题字段(RFC2616中定义的字段),不允许使用百分比编码。

  • 对于扩展标头字段,RFC2616中没有描述百分比编码,但只要生成的字符是US-ASCII(如果需要),就可以应用各种编码,包括百分比编码为了面向未来)。只是不要认为 使用百分比编码。

我找到了更多来源:

答案 1 :(得分:0)

TL; DR:八位字节百分比编码和base64编码都可以。

指示HTTP标头字段参数的字符编码和语言 https://tools.ietf.org/html/rfc8187

此文档指定了适合在HTTP标头中使用的编码 字段...

阅读“ 3.2.3。示例”

base64 编码也很好,请阅读HTTP基本授权规范:https://tools.ietf.org/html/rfc7617