Hypertext Transfer Protocol (HTTP) は HTML などのハイパーメディアドキュメントを転送するための、アプリケーション層プロトコルです。これはウェブブラウザーとウェブサーバーの間の通信用に設計されていますが、他の用途でも使用できます。HTTP は伝統的なクライアントサーバーモデルに従い、クライアントがコネクションを開き、リクエストを送信し、レスポンスを受け取るまで待ちます。また HTTP はステートレスプロトコルであり、サーバーは 2 つのリクエストの間でいかなるデータ (状態) も保持しません。
HTTP は多くの場合 TCP/IP 層をベースにしますが、任意の信頼性があるトランスポート層プロトコル、すなわち暗黙のうちにメッセージを捨てないプロトコルで使用することもできます。
チュートリアル
ガイドやチュートリアルで、HTTP の使い方を学びましょう。
- HTTP の概要
- クライアントサーバープロトコルの基本機能を提供します。何ができるかや使用目的を説明します。
- HTTP の進化
- 初期バージョンの HTTP から HTTP/2 以降まで、HTTP で発生した変化を手短に説明します。
- HTTP メッセージ
- HTTP/1.x や HTTP/2 のさまざまなメッセージについて、タイプや構造を説明します。
- 典型的な HTTP セッション
- 一般的な HTTP セッションを示して、フローを説明します。
- HTTP/1.x のコネクション制御
- HTTP/1.x で使用できる 3 種類のコネクション制御モデルについて、長所や短所を説明します。
- HTTP キャッシュ
- キャッシュは、ウェブサイトの良好なパフォーマンスのために重要なツールです。この記事ではさまざまな種類のキャッシュや、HTTP ヘッダーでそれらを設定および制御する方法を説明します。
- HTTP Cookies
- Cookie の動作は RFC 6265 で定義しています。サーバーは HTTP リクエストを受け取ると、そのレスポンスで
Set-Cookie
ヘッダーを送信できます。その後クライアントは同一のサーバーに対するすべてのリクエストで、Cookie
HTTP ヘッダーによって Cookie の値を返します。また、Cookie の有効期限を指定することができます。さらに、Cookie を特定のドメインやパスに限定することもできます。 - HTTP Access Control (CORS)
- クロスサイト HTTP リクエストとは、リクエストを出すリソースが存在するドメインとは異なるドメインのリソースに対する HTTP リクエストを指します。例えば、ドメイン A (
https://domaina.example
) から読み込まれた HTML ウェブページなどから、img
要素を使用してドメイン B (https://domainb.foo
) 上の画像 (https://domainb.foo/image.jpg
) に対する HTTP リクエストが発行される、という状況を指します。このような状況は今日のウェブ上では非常にありふれたことであり、CSS スタイルシートや画像、スクリプトなどのさまざまなリソースがクロスサイト方式で読み込まれます。 - DNS プリフェッチの制御
- Firefox など、現代のほとんどのブラウザーは DNS プリフェッチを行います。これはユーザーがたどるであろうリンクや、ドキュメントが参照する画像、CSS、JavaScript といったリソースのドメイン名解決をブラウザーが事前に行うことです。このプリフェッチはバックグラウンドで行いますので、参照先のアイテムをリクエストするときには、すでに DNS 名前解決が完了しているでしょう。これにより、例えばユーザーが実際にリンクをクリックするときのレイテンシを低減します。
リファレンス
詳細な HTTP リファレンスドキュメントを見ていきましょう
- HTTP ヘッダー
- HTTP メッセージヘッダーはリソース、あるいはサーバーやクライアントの動作を精密に示すために使用します。プロプライエタリーなカスタムヘッダーは、'X-' 接頭辞を使用して追加できます。それ以外のヘッダーは IANA レジストリー に収録されており、RFC 4229 が基になっています。また IANA は 新たに提案された HTTP ヘッダのレジストリー も管理しています。
- HTTP リクエストメソッド
- HTTP では
GET
やPOST
だけでなく、OPTIONS
やDELETE
やTRACE
などのあまり一般的ではないリクエストを含む、さまざまな操作を行うことができます。 - HTTP ステータスレスポンスコード
- HTTP レスポンスコードは、特定の HTTP リクエストが正常に完了したかを示します。レスポンスは情報レスポンス、成功レスポンス、リダイレクション、クライアントエラー、サーバーエラーの 5 つのクラスに分類されます。
ツールとリソース
HTTP コネクションの使用やデバッグに役立つツールです。
- Firefox 開発ツール
- ネットワークモニター
- RedBot
- キャッシュ関係のヘッダーを確認するツールです。
- How Browsers Work (日本語版)
- ブラウザの内部処理や HTTP プロトコルのリクエストのフローに関する、とても包括的な記事です。すべてのウェブ開発者が読むべき記事です。