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

2. クライアント設定

  1. クライアント設定

HTTP クライアントは、変数 "target_host" および "target_port" を持つ URI テンプレート [TEMPLATE] を使用して UDP プロキシを使用するように設定される。例を以下に示す:

https://example.org/.well-known/masque/udp/\{target_host\}/\{target_port\}/ https://proxy.example.org:4443/masque?h=\{target_host\}&p=\{target_port\} https://proxy.example.org:4443/masque{?target_host,target_port}

                図 1: URI テンプレートの例

以下の要件が URI テンプレートに適用される:

  • URI テンプレートは、レベル 3 テンプレート以下でなければならない (MUST)。

  • URI テンプレートは絶対形式でなければならず (MUST)、空でないスキーム、オーソリティ、およびパスコンポーネントを含まなければならない (MUST)。

  • URI テンプレートのパスコンポーネントは、スラッシュ ("/") で始まらなければならない (MUST)。

  • すべてのテンプレート変数は、URI のパスまたはクエリコンポーネント内にありなければならない (MUST)。

  • URI テンプレートは、2 つの変数 "target_host" および "target_port" を含まなければならず (MUST)、他の変数を含んでもよい (MAY)。

  • URI テンプレートは、非 ASCII Unicode 文字を含んではならず (MUST NOT)、0x21-0x7E の範囲(両端を含む)の ASCII 文字のみを含まなければならない (MUST)(パーセントエンコーディングは許可されることに注意;[URI] のセクション 2.1 を参照)。

  • URI テンプレートは、予約済み展開 ("+" 演算子)、フラグメント展開 ("#" 演算子)、ドットプレフィックス付きラベル展開、スラッシュプレフィックス付きパスセグメント展開、またはセミコロンプレフィックス付きパススタイルパラメータ展開を使用してはならない (MUST NOT)。

クライアントは上記の要件を検証すべきである (SHOULD);ただし、クライアントはこの特定の検証を欠く汎用 URI テンプレート実装を使用してもよい (MAY)。クライアントが URI テンプレートによって上記の要件のいずれかが満たされていないことを検出した場合、クライアントはその設定を拒否し、UDP プロキシに送信することなくリクエストを中止しなければならない (MUST)。

元の HTTP CONNECT メソッドは、ターゲットホストとポートの伝達を許可したが、スキーム、プロキシオーソリティ、パス、またはクエリは許可しなかった。したがって、ユーザーがプロキシホストとプロキシポートのみを設定できるようにするプロキシ設定インターフェースを持つクライアントが存在する。このような制限に制約される本仕様のクライアント実装は、デフォルトテンプレートを使用して UDP プロキシ機能にアクセスしようとしてもよい (MAY)。デフォルトテンプレートは、"https://$PROXY_HOST:$PROXY_PORT/.well-known/masque/udp/{target_host}/{target_port}/" と定義され、ここで $PROXY_HOST と $PROXY_PORT は、それぞれ UDP プロキシの設定されたホストとポートである。UDP プロキシのデプロイメントは、そのようなクライアントと相互運用する必要がある場合、この場所でサービスを提供すべきである (SHOULD)。