メインコンテンツまでスキップ

1. はじめに

HTTP [RFC7230] は、リソースの識別とその場所を混同しています。言い換えれば、「http://」および「https://」URI は、対話するものの名前付けと検索の両方に使用されます。

場合によっては、HTTP において識別と場所を分離することが望ましいことがあります。リソースの同じ識別子を維持しながら、ネットワーク上の異なる場所で対話することです。

例えば:

  • オリジンサーバーが負荷を受けている場合や、クライアントにとってよりローカルな場所にあるサーバーを見つけた場合に、クライアントを別のサーバーにリダイレクトしたい場合があります。
  • オリジンサーバーが、HTTP/2 [RFC7540] などの新しいプロトコルや、Transport Layer Security (TLS) [RFC5246] などのセキュリティが向上したプロトコルを使用して、リソースへのアクセスを提供したい場合があります。
  • オリジンサーバーが、運用上の目的で、Server Name Indication (SNI)([RFC6066] のセクション 3)をサポートするものなど、クライアントを機能のグループに分割したい場合があります。

本仕様は、HTTP の新しい概念である「代替サービス(Alternative Services)」を定義し、オリジンサーバーがネットワーク上で対話するための追加の手段を指定できるようにします。セクション 2 でこれに関する一般的なフレームワークを定義し、HTTP ヘッダーフィールド(セクション 3)または HTTP/2 フレーム(セクション 4)を使用してその存在を通知する具体的なメカニズム、および代替サービスが使用されたことを示す方法(セクション 5)を定義します。

また、間違った場所が使用された場合に、オリジンサーバーまたはその指名された代替サーバーが特定のオリジンに対して権限がないことを示すために使用できるステータスコード 421 (Misdirected Request)(セクション 6)も承認しています。

1.1. 表記規則

本ドキュメントにおけるキーワード "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", および "OPTIONAL" は、[RFC2119] で説明されているように解釈されます。

本ドキュメントでは、[RFC5234] で定義され、[RFC7405] で更新された拡張 BNF を、[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>