Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest 对HTTP头使用百分比编码是否合适或必要?_Rest_Http - Fatal编程技术网

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

Rest 对HTTP头使用百分比编码是否合适或必要?,rest,http,Rest,Http,当我构建RESTful客户端和服务器时,与HTTP头(请求或响应)一起使用是合适的还是必要的,还是这种类型的编码只适用于URI?因为当我搜索这个问题时,这个问题出现在顶部,因为这个问题并没有具体回答关于百分比编码的问题,所以我试图简明扼要地回答OP的问题,尽管它已经有些过时了: 基本上没有,但见下文 仅描述URI的百分比编码(搜索%或十六进制或百分比),并定义字段值,但不提及百分比编码 但是,RFC2616允许在头字段值中使用仲裁八位字节(除了CTLs),并且对于ISO-8859-1中未包含的字

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

因为当我搜索这个问题时,这个问题出现在顶部,因为这个问题并没有具体回答关于百分比编码的问题,所以我试图简明扼要地回答OP的问题,尽管它已经有些过时了:

基本上没有,但见下文

仅描述URI的百分比编码(搜索
%
十六进制
百分比
),并定义
字段值
,但不提及百分比编码

但是,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协议最重要的定义:可能重复的可能重复,将其标记为目前公认的答案,因为它相当简洁地回答了这个问题。请注意,所有这些仅适用于专门允许此类转义机制的头字段。