---
title: HTTP
slug: Web/HTTP
tags:
- HTTP
- Hypertext
- Reference
- TCP/IP
- Web
- Web Development
- 'l10n:priority'
translation_of: Web/HTTP
---
{{HTTPSidebar}}
Hypertext Transfer Protocol (HTTP) は HTML などのハイパーメディア文書を転送するためのアプリケーション層プロトコルです。このプロトコルはウェブブラウザー(クライアント)とウェブサーバー間の通信を目的として設計されていますが、他の用途でも使用されることがあります。 HTTP は旧来のクライアント・サーバーモデルに則っており、クライアントはサーバーにリクエストを送信するためにポートを開き、サーバー側からのレスポンスが返ってくるまで待機します。 HTTP はいわゆるステートレスプロトコルであり、つまりサーバーは二つのリクエスト間で何もデータを保持しません。 HTTP は多くの場合 TCP/IP 層上の通信で使用されますが、任意の信頼性があるトランスポート層、すなわち、 UDP のように知らぬ間にメッセージが失われるようなことがないプロトコルでも使用されることがあります。 RUDP — UDP に信頼性を追加したもの — も代替用として適合します。
チュートリアル
ガイドやチュートリアルで、 HTTP の使い方を学びましょう。
- HTTP の概要
- クライアントサーバープロトコルの基本的な特徴です。 HTTP で実現できること、また何故それを実現すべきなのかを説明します。
- HTTP キャッシュ
- キャッシュは高速で快適なウェブサイトの閲覧を可能にするために非常に需要な要素です。この記事では様々なキャッシングの手法や、HTTP ヘッダーでどのようにそれらを制御するかを説明します。
- HTTP Cookie
- 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/2、姿を現した HTTP/3 以降までの変革を端的に説明します。
- Mozilla ウェブセキュリティガイドライン
- 運用チームがセキュアなウェブアプリケーションを開発するのに役立つコツをまとめました。
- HTTP メッセージ
- HTTP/1.x や HTTP/2 の多様なメッセージが持つ型や構造を説明します。
- HTTP セッションの典型例
- 一般的な HTTP セッションのフローを示しながら説明します。
- HTTP/1.x のコネクション制御
- HTTP/1.x で使用できる 3種類の通信制御モデルの持つ長所と短所を説明します。
リファレンス
詳細な HTTP の参考資料を見ていきましょう。
- HTTP ヘッダー
- HTTP メッセージヘッダーは、リソース、あるいはサーバーやクライアントの挙動を示すために使用します。個人的にヘッダーをカスタマイズする場合は、
X-
を頭に付けることで追加できます。それ以外のヘッダーは IANA レジストリ に収録されていますが、元の内容は RFC 4229 で定義されていました。IANA は 新たに提案された HTTP メッセージヘッダーのレジストリも管理しています。
- HTTP リクエストメソッド
- HTTP では多様な操作を実現することができます。一般的な {{HTTPMethod("GET")}} や {{HTTPMethod("POST")}} だけでなく、{{HTTPMethod("OPTIONS")}} や {{HTTPMethod("DELETE")}}、{{HTTPMethod("TRACE")}} などのあまり一般的ではないリクエストも包括しています。
- HTTP ステータスレスポンスコード
- HTTP レスポンスコードは、特定の HTTP リクエストが正常に完了したかを示します。レスポンスは通知レスポンス、成功レスポンス、リダイレクション、クライアントエラー、サーバーエラーの 5 つのクラスに分類されます。
- CSP ディレクティブ
- ウェブサイトの管理者は、{{HTTPHeader("Content-Security-Policy")}} レスポンスヘッダーフィールドで、ユーザーエージェントが特定のページで読み込むことが許可されているリソースを制御することができます。いくつか例外はありますが、大元のサーバーやスクリプトのエンドポイントの特定をポリシーとして含んでいることが多いです。
HTTP の理解やデバッグに役立つツールやリソースです。
- Firefox 開発ツール
- ネットワークモニター
- Mozilla 研究室
-
開発者、システム管理者、セキュリティの専門家の、安全でセキュアなサイトの構築を支援するプロジェクトです。
- RedBot
- キャッシュ関係のヘッダーを検証するツールです。
- How Browsers Work
- ブラウザーの内部処理や、 HTTP プロトコルのリクエスト処理のフローに関してとても詳しく書かれた記事です。ウェブ開発者であれば一読するべき記事になります。