HTTP/2クライアント

クライアント (Web)

[22] Web におけるクライアントは、に対してサービスの提供を要求するソフトウェア部品です。

仕様書

HTTP クライアント

[3] クライアント (client) は、 一つ以上HTTP要求送信するために接続確立するプログラムです >>2

[4]利用者エージェント」も同じような定義になっていますが、 利用者エージェントだけでなく関門も、 上流に対してはクライアントとみなされるようです。

[24] しかし一般的にはのことを考慮せず、クライアント利用者エージェントを同義語として使うことが多いようです。 例えば以降で示す WebDAVOAuthクライアントも含むとは考え難いです。

[43] HTTP/2クライアント (client) は、 HTTP/2接続開始 (initiate) するエンドポイントです >>42クライアントは、HTTP要求を送信し、HTTP応答を受信します >>42クライアントは、 TCP接続initiator です >>44

[45] HTTP の仕様では、 クライアントの挙動が (各プロトコル要素をどう送受信するべきかなど) 断片的に規定されています。

[46] Fetch Standard では、利用者エージェントがどのように要求を生成し、 応答を処理するべきかが規定されています。

[47] その他の HTTP を使ったアプリケーション (WebDAVOAuth など) では、それぞれの技術を実装するクライアントの挙動が規定されています。

[48] 実用的な汎用HTTPクライアントライブラリーは、次の機能を備える必要がありそうです。

WebDAV クライアント

[23] WebDAV クライアントは、 HTTP 本体に加えて WebDAV を実装するクライアントです。

[12] WebDAV クライアントは、 HTTP/1.1 に適合しなければなりません >>11

[8] WebDAV クライアントは、 XML 1.0XML名前空間 1.0 を実装しなければなりません >>7

[9] WebDAV クライアントは、応答整形式でなければ、 要求メソッドが実行されたかどうかを仮定してはならずの動作がおかしいと考えるべきです >>7

[60] WebDAV クライアントは、 WebDAVXML文書 (死特性以外) の未知の要素属性、既知ながら想定されていない場所で使われている要素属性について、 無視して処理しなければなりません >>59生特性の値でも原則として無視するべきです >>59

[10] 処理指令は無視するべきです >>59

OAuth 1.0 クライアント (消費者)

[15] OAuth 1.0 におけるクライアント (client) は、 OAuth認証された要求を使うことができる HTTPクライアントです >>13

[14] 元々は消費者 (consumer) ともいいました >>13

[16] Webアプリケーションが他の WebアプリケーションWeb APIOAuth により使う場合だと、最初の Webアプリケーションクライアントに当たります。 両 Webアプリケーションを使う利用者資源所有者に当たり、 OAuth におけるクライアントで無いので注意が必要です。

[17] OAuth の元の用語では消費者と言っていたので混同の虞は無かったのですが、 IETF で変更されてしまいました。

[27] クライアントは、次のエンドポイントを持つことができます。

OAuth 2.0 クライアント

[19] クライアント (client) は、資源所有者にかわって、その認可に基づき被保護資源要求を行う応用です >>18

[20] 実装の性質は特に制限されず、デスクトップ、その他どの装置で実行される応用であっても構いません >>18

[25] OAuth 2.0 の利用に先立ちクライアント認可鯖に登録することになっています >>21

[26] クライアントは、次のエンドポイントを持つことができます。

[28] クライアントは、クライアント型により分類されます。

[30] クライアントの開発者は、フィッシング防止のため、 利用者エージェントを埋め込むか外部のものを利用するかの判断や認可鯖が正しいサーバーか検証する手段の提供など配慮するべきです >>29

[32] OpenID Connect を実装する OAuth 2.0 クライアントRelying Party (RP) といいます >>31。 すなわち、 OpenID Provider による末端利用者認証claim が必要な応用をいいます >>33

WebSocket クライアント

[41] WebSocket handshake を開始してWebSocketサーバーと通信するものを、 WebSocketクライアントといいます。

[35] 特定の通信事業者携帯電話上のブラウザーなど、 管理された環境下で動作するクライアントは、ネットワーク上の他者に WebSocket接続の管理を委託しても構いません。その場合、 携帯電話上のソフトウェアと委託先を含めた全体をクライアントといいます >>34

[36] 元々 WebSocketWebブラウザーサーバーとの通信のためのプロトコルですが、 Webブラウザー以外のクライアントが使うこともできます。

[37] 例えば、Webブラウザーと専用クライアントとで共通した WebSocket を用いたチャットアプリケーションを実装できます。
[38] Webブラウザーで使わないなら、 TCP を普通に使えば良いので、 WebSocket を使う利点は特にありません。 Webブラウザーではセキュリティー上の理由から TCP著者にそのまま使わせることができないため、 WebSocket が開発されました。

[39] HTML StandardWebブラウザー向けの WebSocketクライアントとして WebSocket インターフェイスを規定しています。

[40] Webブラウザー以外のクライアントはこの規定に従う必要はありませんが、 実用上、同様のものを (各プログラミング言語フレームワークなどに合わせた形にして) 実装するのが好ましいと思われます。

実例

[49] HTTPクライアント

関連

[5] クライアントからのHTTP要求を受け取ってHTTP応答クライアントに送信するものを、 といいます。

[6] クライアントHTTP要求に関しては送信者HTTP応答に関しては受信者となります。

歴史

[1] HTTP (RFC 1945 1.2, RFC 2068 1.3, RFC 2616 1.3)
client
An application {1945} program that establishes connections for the purpose of sending requests.
クライアント
要求を送信する目的で接続を確立する応用プログラム。