rest - 对 HTTP header 使用百分比编码是否合适或有必要?

标签 rest http

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

最佳答案

基本上没有,但见下文。

RFC2616仅针对 URI 描述百分比编码(搜索 %HEX HEXpercent),它定义了 field-value 没有提到百分比编码。

但是,RFC2616 允许 header 字段值中的任意八位字节(CTL 除外),并且有一个半生不熟的声明提到 MIME 编码 (RFC2047) 用于不在 ISO-8859-1 中的字符(请参阅其 Section 2.2TEXT 的定义)。我称该声明为“半生不熟”,因为它没有明确说明 ISO-8859-1 是用于解释八位字节的强制字符集,但尽管如此,它规范地要求对外部字符使用 MIME 编码该字符集。似乎 ISO-8859-1 的使用和 header 字段值的 MIME 编码都没有得到广泛支持。

HTTPbis 似乎已经放弃了这一点,并返回到 US-ASCII 以获取 header 字段值。参见 this answer了解详情。

我的解读是:

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

  • 对于扩展头字段,百分比编码在 RFC2616 中没有描述,但是有应用各种编码的空间,包括百分比编码,只要结果字符是 US-ASCII(如果你想面向 future )。只是不要认为您必须使用百分比编码。

我找到的更多资源:

关于rest - 对 HTTP header 使用百分比编码是否合适或有必要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23215227/

相关文章:

http - "404 redirect"是合法的重定向吗?

java - CXF REST 服务返回超过 1 个 http 代码

json - HTTP 中的 "406-Not Acceptable Response"是什么?

ruby - 如何访问 sinatra 错误处理程序中响应的 HTTP 代码?

c# - 下载文件到远程服务器 HTTP 400 错误

java - REST - 如何缩小 Json 响应

javascript - 按钮 JQuery 事件只工作一次,为什么?

java - 405 - 请求 GET 和 POST

python - Django Rest-Framework 嵌套序列化器顺序

http - 一次只能登录 1 响应代码