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

9. Constructing an Effective Request URI (有効リクエストURIの構築)

本セクションでは、HSTSホストが受信したHTTPリクエストの有効リクエストURIをどのように構築しなければならないかを指定する。

HTTPリクエストは通常、ターゲットリソースのabsoluteURIを伝達しない; 代わりに、URIはRequest-URI、Hostヘッダーフィールド、および接続コンテキストから推測される必要がある ([RFC2616], セクション3.2.1、5.1.2、および5.2)。このプロセスの結果は"有効リクエストURI (effective request URI, ERU)"と呼ばれる。"ターゲットリソース (target resource)"は、有効リクエストURIによって識別されるリソースである。

9.1. ERU Fundamental Definitions (ERU基本定義)

HTTPリクエストメッセージの最初の行Request-Lineは、[RFC2616] セクション5.1の以下のABNFで指定される:

Request-Line   = Method SP Request-URI SP HTTP-Version CRLF

Request-Line内のRequest-URIは、[RFC2616] セクション5.1.2の以下のABNFで指定される:

Request-URI    = "*" | absoluteURI | abs_path | authority

Hostリクエストヘッダーフィールドは、[RFC2616] セクション14.23の以下のABNFで指定される:

Host = "Host" ":" host [ ":" port ]

9.2. Determining the Effective Request URI (有効リクエストURIの決定)

Request-URIがabsoluteURIである場合、有効リクエストURIはRequest-URIである。

Request-URIがabs_path形式またはアスタリスク形式を使用し、Hostヘッダーフィールドが存在する場合、有効リクエストURIは次の内容を連結することによって構築される:

  • スキーム名: リクエストが非セキュアなTCP接続を介して受信された場合は"http"、TLS/SSLで保護されたTCP接続を介して受信された場合は"https"、および

  • オクテットシーケンス"://"、および

  • Hostヘッダーフィールドからのホストとポート (存在する場合)、および

  • Request-Lineから取得されたRequest-URI (Request-URIがアスタリスク"*"だけである場合を除く)。

Request-URIがabs_path形式またはアスタリスク形式を使用し、Hostヘッダーフィールドが存在しない場合、有効リクエストURIは未定義である。

それ以外の場合、Request-URIがauthority形式を使用する場合、有効リクエストURIは未定義である。

有効リクエストURIは、[RFC2616] セクション3.2.3で説明されているルールを使用して比較されるが、空のパスコンポーネントは"/"の絶対パスと同等として扱われてはならない (MUST NOT)。

9.2.1. Effective Request URI Examples (有効リクエストURIの例)

例1: メッセージの有効リクエストURI

GET /pub/WWW/TheProject.html HTTP/1.1
Host: www.example.org:8080

(非セキュアなTCP接続を介して受信) は"http"、プラス"://"、プラスauthorityコンポーネント "www.example.org:8080" 、プラスrequest-target "/pub/WWW/TheProject.html"である。したがって、それはhttp://www.example.org:8080/pub/WWW/TheProject.htmlである。

例2: メッセージの有効リクエストURI

OPTIONS * HTTP/1.1
Host: www.example.org

(SSL/TLSで保護されたTCP接続を介して受信) は"https"、プラス"://"、プラスauthorityコンポーネント "www.example.org" である。したがって、それはhttps://www.example.orgである。