跳到主要内容

1. 引言 (Introduction)

HTTP [RFC7230] 将资源标识 (identification) 与资源位置 (location) 合并在一起. 换句话说, "http://" 和 "https://" URI 同时用于命名资源, 也用于找到要交互的对象.

在某些情况下, 人们希望在 HTTP 中分离标识与位置: 保持资源标识符不变, 但在网络中的另一个位置与该资源交互.

例如:

  • 源服务器 (origin server) 在负载较高时, 或发现某个服务器位置更接近客户端时, 可能希望将客户端重定向到另一个服务器.
  • 源服务器可能希望使用新的协议提供对其资源的访问, 例如 HTTP/2 [RFC7540], 或使用安全性更强的协议, 例如传输层安全 (Transport Layer Security, TLS) [RFC5246].
  • 出于运维目的, 源服务器可能希望按能力对客户端分组, 例如支持服务器名称指示 (Server Name Indication, SNI) 的客户端 ([RFC6066] 第 3 节).

本规范在 HTTP 中定义了一个新概念, 即"替代服务 (Alternative Services)", 允许源服务器指定在网络上与其交互的其他方式. 第 2 节定义了这一机制的通用框架, 第 3 节和第 4 节分别定义了使用 HTTP 头字段和 HTTP/2 帧宣告替代服务存在的具体机制, 第 5 节还定义了指示已使用某个替代服务的方法.

本规范还认可状态码 421 (Misdirected Request) (第 6 节). 当使用了错误的位置时, 源服务器或其指定的替代服务可以使用该状态码表明自身并非给定源 (origin) 的权威服务.

1.1. 记法约定 (Notational Conventions)

本文档中的关键词 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" 和 "OPTIONAL" 应按 [RFC2119] 中的描述解释.

本文档使用 [RFC5234] 定义并由 [RFC7405] 更新的扩展巴科斯-诺尔范式 (Augmented BNF, ABNF), 以及 [RFC7230] 第 7 节定义的 "#rule" 扩展. 以下规则定义于 [RFC5234], [RFC7230] 和 [RFC7234]:

OWS           = <OWS, see [RFC7230], Section 3.2.3>
delta-seconds = <delta-seconds; see [RFC7234], Section 1.2.1>
port = <port, see [RFC7230], Section 2.7>
quoted-string = <quoted-string, see [RFC7230], Section 3.2.6>
token = <token, see [RFC7230], Section 3.2.6>
uri-host = <uri-host, see [RFC7230], Section 2.7>