HTTP

ハイパーテキスト転送プロトコル (Hypertext Transfer Protocol, HTTP) は HTML などのハイパーメディア文書を転送するためのアプリケーション層プロトコルです。このプロトコルはウェブブラウザー(クライアント)とウェブサーバー間の通信を目的として設計されていますが、他の用途でも使用されることがあります。 HTTP は旧来のクライアント・サーバーモデルに則っており、クライアントはサーバーにリクエストを送信するためにポートを開き、サーバー側からのレスポンスが返ってくるまで待機します。 HTTP はいわゆるステートレスプロトコルであり、つまりサーバーは 2 つのリクエスト間で何もデータを保持しません。

チュートリアル

ガイドやチュートリアルで、 HTTP の使い方を学びましょう。

HTTP の概要

クライアントサーバープロトコルの基本的な特徴です。 HTTP で実現できること、また何故それを使用すべきなのかを説明します。

HTTP キャッシュ

キャッシュは高速で快適なウェブサイトの閲覧を可能にするために非常に需要な要素です。この記事では様々なキャッシュの手法や、HTTP ヘッダーでどのようにそれらを制御するかを説明します。

Cookie の動作は RFC 6265 で定義されています。サーバーは HTTP リクエストをクライアント側に送信する際、Set-Cookie ヘッダー付与することができます。クッキーの値は Cookie リクエストのヘッダーの識別子に含まれた、同一サーバーに対する全てのリクエストを保持しており、クライアント側はそれを返します。また、Cookie に有効期限を設定したり、特定のドメインやパスだけにステートフルな挙動を限定することもできます。

オリジン間リソース共有 (CORS)

サイト間 HTTP リクエストとは、リクエストを生成したリソースがあるドメインとは 別のドメイン のリソースをリクエストする HTTP リクエストのことを指します。例えば、ドメイン A (http://domaina.example/) から読み込まれた HTML ページが、img 要素を使用してドメイン B の画像 (http://domainb.foo/image.jpg) に対するリクエストを発行することがそれにあたります。昨今のウェブページでは、CSS スタイルシートや画像、スクリプト、その他のリソースを含め、上記の例のようにサイトを跨ってデータを読み込むのが一般的になっています。CORS によって、ウェブ開発者がこのようなサイト間リクエストに対して個々のサイトが示す挙動を制御することができます。

HTTP クライアントヒント

クライアントヒントは、サーバーがクライアントから端末、ネットワーク、ユーザー、ユーザーエージェント固有の環境設定に関する情報を積極的にリクエストするために使用できるレスポンスヘッダーの集合です。 サーバーは、クライアントが提供する情報をもとに、送信するリソースを決定することができます。

HTTP の進化

初期バージョンの HTTP から最新の HTTP/2、姿を現した HTTP/3 以降までの変革を端的に説明します。

Mozilla ウェブセキュリティガイドライン

運用チームがセキュアなウェブアプリケーションを開発するのに役立つコツをまとめました。

HTTP メッセージ

HTTP/1.x や HTTP/2 の多様なメッセージが持つ型や構造を説明します。

HTTP セッションの典型例

一般的な HTTP セッションのフローを示しながら説明します。

HTTP/1.x のコネクション制御

HTTP/1.x で使用できる 3 種類の通信制御モデルの持つ長所と短所を説明します。

リファレンス

詳細な HTTP の参考資料を見ていきましょう。

HTTP ヘッダー

HTTP メッセージヘッダーは、リソース、あるいはサーバーやクライアントの挙動を示すために使用します。ヘッダーは IANA レジストリー に収録されていますが。IANA は 新たに提案された HTTP メッセージヘッダーのレジストリーも管理しています。

HTTP リクエストメソッド

HTTP では多様な操作を実現することができます。一般的な GETPOST だけでなく、OPTIONSDELETETRACE などのあまり一般的ではないリクエストも包括しています。

HTTP ステータスレスポンスコード

HTTP レスポンスコードは、特定の HTTP リクエストが正常に完了したかを示します。レスポンスは通知レスポンス、成功レスポンス、リダイレクション、クライアントエラー、サーバーエラーの 5 つのクラスに分類されます。

CSP ディレクティブ

ウェブサイトの管理者は、Content-Security-Policy レスポンスヘッダーフィールドで、ユーザーエージェントが特定のページで読み込むことが許可されているリソースを制御することができます。いくつか例外はありますが、大元のサーバーやスクリプトのエンドポイントの特定をポリシーとして含んでいることが多いです。

ツールとリソース

HTTP の理解やデバッグに役立つツールやリソースです。

Firefox 開発者ツール

ネットワークモニター

Mozilla 研究室

開発者、システム管理者、セキュリティの専門家の、安全でセキュアなサイトの構築を支援するプロジェクトです。

RedBot

キャッシュ関係のヘッダーを検証するツールです。

How Browsers Work (2011)

ブラウザーの内部処理や、 HTTP プロトコルのリクエスト処理のフローに関してとても詳しく書かれた記事です。ウェブ開発者であれば一読するべき記事になります。