Appendix B. 相对于 RFC 2616 的变更
本次修订中的主要变更具有编辑性质: 提取消息语法, 并将 HTTP 语义划分为独立文档, 分别覆盖核心特性, 条件请求, 部分请求, 缓存和认证. 符合性语言已被修订, 以清晰指向需求, 术语也已改进, 用于区分 payload 与表示, 以及表示与资源.
新增了一项需求: 当 URI 中嵌入的语义与请求方法不一致时, 必须禁用这些语义, 因为这是互操作失败的常见原因.(Section 2)
新增了一个算法, 用于确定 payload 是否与特定标识符关联.(Section 3.1.4.1)
已移除 text media types 的 ISO-8859-1 默认 charset; 现在默认值由 media type 定义决定. 同样, 已从 Accept-Charset header field 中移除对 ISO-8859-1 的特殊处理.(Section 3.1.1.3 and Section 5.3.3)
Content-Location 的定义已更改, 不再影响用于解析相对 URI references 的 base URI, 原因是实现支持不佳, 且在内容协商资源中可能破坏相对链接, 产生不良影响.(Section 3.1.4.2)
为与 [RFC7230] 中方法中立的解析算法保持一致, GET 的定义已放宽, 使请求可以具有 body, 尽管 body 对 GET 没有语义.(Section 4.3.1)
服务器不再被要求处理所有 Content-* header fields, 并且已明确禁止在 PUT 请求中使用 Content-Range.(Section 4.3.4)
CONNECT 方法的定义已从 [RFC2817] 移至本规范.(Section 4.3.6)
OPTIONS 和 TRACE 请求方法已被定义为安全方法.(Section 4.3.7 and Section 4.3.8)
由于广泛部署的实现存在缺陷, Expect header field 的扩展机制已被移除.(Section 5.1.1)
Max-Forwards header field 已被限制为仅用于 OPTIONS 和 TRACE 方法; 此前, 扩展方法也可以使用它.(Section 5.1.2)
当没有适用的引用 URI 时, 建议使用 "about:blank" URI 作为 Referer header field 的值, 以区别于 Referer 字段未发送或已被移除的其他情况.(Section 5.5.2)
以下状态码现在是可缓存的 (也就是说, 在没有显式 freshness 信息的情况下, 它们可由缓存存储并重用): 204, 404, 405, 414, 501.(Section 6)
201 (Created) 状态描述已更改, 以允许创建了多个资源的可能性.(Section 6.3.2)
203 (Non-Authoritative Information) 的定义已扩展, 也包括 payload 转换的情况.(Section 6.3.4)
可安全自动重定向的请求方法集合不再是封闭集合; 用户代理能够基于请求方法语义作出该判断. 重定向状态码 301, 302 和 307 不再对响应 payload 和用户交互具有规范性需求. (Section 6.4)
状态码 301 和 302 已更改, 允许用户代理将方法从 POST 重写为 GET.(Sections 6.4.2 and 6.4.3)
303 (See Other) 状态码的描述已更改, 允许在给出显式 freshness 信息时对其进行缓存, 并为对 GET 的 303 响应添加了具体定义.(Section 6.4.4)
由于与代理带内配置有关的安全问题, 305 (Use Proxy) 状态码已被弃用.(Section 6.4.5)
400 (Bad Request) 状态码已放宽, 使其不再局限于语法错误.(Section 6.5.1)
426 (Upgrade Required) 状态码已从 [RFC2817] 纳入.(Section 6.5.15)
HTTP-date 和 Date header field 的需求对象已缩小为生成日期的系统, 而不是所有发送日期的系统.(Section 7.1.1)
Location header field 的语法已更改, 允许所有 URI references, 包括相对引用和 fragments, 同时澄清了若干不适合使用 fragments 的情形.(Section 7.1.2)
Allow 已重新归类为响应 header field, 移除了在 PUT 请求中指定它的选项. 与 Allow 内容相关的需求已放宽; 相应地, 客户端不再被要求始终信任其值.(Section 7.4.1)
已定义 Method Registry.(Section 8.1)
Status Code Registry 已由本规范重新定义; 此前, 它定义于 [RFC2817] 的 Section 7.1.(Section 8.2)
content codings 的注册已更改为要求 IETF Review.(Section 8.4)
Content-Disposition header field 已被移除, 因为它现在由 [RFC6266] 定义.
Content-MD5 header field 已被移除, 因为它在 partial responses 方面的实现不一致.