HTTP ガイド
このページでは、 HTTP のガイドを紹介します。 HTTP プロトコルを使用して、どのようなことができるかを理解するに役立つものです。
- Cross-Origin Resource Policy (CORP)
クロスオリジンリソースポリシーは
Cross-Origin-Resource-Policy
ヘッダーによって設定されるポリシーで、ウェブサイトやアプリケーションが他のオリジンから (<script>
や<img>
などの要素を使用して発行された) 特定のリクエストに対する保護をオプトインすることで、 Spectre のような投機的なサイドチャネル攻撃や、クロスサイトスクリプトインクルージョン攻撃を緩和することができます。- HTTP Cookie の使用
Cookie(ウェブ Cookie、ブラウザー Cookie とも呼ぶ)は、サーバーがユーザーのウェブブラウザーに送信する小さなデータです。ブラウザーは Cookie を保存したり、新しい Cookie を作成したり、既存の Cookie を変更したり、後でリクエストされたときに同じサーバーにそれらを送り返したりすることができます。 Cookie により、ウェブアプリケーションは限られた量のデータを格納し、状態についての情報を記憶することができます。HTTP プロトコルは既定ではステートレスだからです。
- HTTP キャッシュ
HTTP キャッシュは、リクエストに関連付けられたレスポンスを格納し、格納されたレスポンスを後続のリクエストのために再利用します。
- HTTP クライアントヒント
クライアントヒント (Client hints) は、サーバーがクライアントに積極的にリクエストすることで、端末、ネットワーク、ユーザー、およびユーザーエージェント固有の環境設定に関する情報を取得することができる HTTP リクエストヘッダー フィールド群です。 サーバーは、クライアントが提供することを選んだ情報に基づいて、送信するリソースを決定することができます。
- HTTP のリダイレクト
URL リダイレクトは、 URL 転送とも呼ばれ、ページ、フォーム、ウェブサイト全体、ウェブアプリケーションなどに 2 つ以上の URL のアドレスを与える技術です。 HTTP ではこの操作のために、特別な種類のレスポンスである **HTTP リダイレクト**を提供しています。
- HTTP の圧縮
圧縮は、ウェブサイトのパフォーマンスを向上させるための重要な手段です。文書によっては、必要な帯域を最大 70% 削減するほどサイズが縮減します。長年かけてアルゴリズムはより効率的になり、またクライアントおよびサーバーが新たなアルゴリズムに対応してきました。
- HTTP の概要
HTTP は、 HTML 文書などのリソースを読み取るためのプロトコルです。 これはウェブにおけるデータ交換の基礎をなし、クライアントサーバープロトコルであり、リクエストは受け取り者(一般にはウェブブラウザー)が生成します。 文書全体は、テキストコンテンツ、レイアウト指示、画像、動画、スクリプトなどのリソースから構成されます。
- HTTP の進化
HTTP (HyperText Transfer Protocol) は World Wide Web を支えるプロトコルです。1989 年から 1991 年にかけてティム・バーナーズ=リーとそのチームによって開発された HTTP は、その柔軟性を形成しながら分かりやすさを維持するために、多くの変化を遂げてきました。HTTP が、実験室でファイルを交換するためのプロトコルから、高解像度や 3D の画像や動画を伝送する現代のインターネットの迷宮へと進化していった経緯をご紹介します。
- HTTP メッセージ
HTTP メッセージは、サーバーとクライアントがデータを交換する手段です。クライアントが送信してサーバーにアクションを起こさせるリクエストと、サーバーの回答であるレスポンスの、2 種類のメッセージがあります。
- HTTP 条件付きリクエスト
HTTP には条件付きリクエストの概念があり、対象となるリソースと検証子の値とを比較することで、リクエストの結果や、成功か失敗かまでもが変化することがあります。このようなリクエストは、キャッシュの内容を検証して、無用な制御を避けたり、ダウンロードの再開の時などに文書の整合性を検証したり、サーバー上の文書をアップロードまたは変更するときに更新内容を失うことを避ける場合などに役立つことがあります。
- HTTP 範囲リクエスト
HTTP 範囲リクエストでは、サーバーからクライアントに HTTP メッセージの一部のみを送信できます。部分リクエストは、たとえば、大きなメディアや、一時停止や再開機能を持つファイルのダウンロードに役立ちます。
- HTTP 認証
HTTP はアクセス制御と認証の基本的な枠組みを提供しています。 このページでは、 HTTP の認証の枠組みを紹介し、サーバーで HTTP の "Basic" 認証を使用してアクセスを制限する方法を紹介します。
- HTTP/1.x のコネクション管理
コネクション管理は、 HTTP の重要なトピックです。コネクションを開いたり管理したりすることは、ウェブサイトやウェブアプリケーションのパフォーマンスに大きな影響を与えます。HTTP/1.x では短命な (short-lived) コネクション、持続的な (persistent) コネクション、HTTP パイプラインといったモデルがあります。
- MIME タイプ(IANA メディア種別)
メディア種別 (別名 Multipurpose Internet Mail Extensions または MIME タイプ) は、文書、ファイル、またはバイト列の性質や形式を示します。 MIME タイプは IETF の
6838
で定義され、標準化されています。- Network Error Logging
ネットワークエラーロギングは、HTTP の
NEL
*レスポンスヘッダー*を使って設定できるメカニズムです。この実験的なヘッダーにより、ウェブサイトやアプリケーションは、対応しているブラウザーから、失敗した (必要であれば成功した) ネットワーク読み取りに関するレポートを受け取ることを選択することができます。- Permissions Policy
機能ポリシーで、ウェブ開発者はブラウザーの特定の機能や API を有効化、無効化したり、動作を変更したりすることができます。これはコンテンツセキュリティポリシーに似ていますが、セキュリティの動作ではなく機能の制御を行うものです。
- オリジン間リソース共有 (CORS)
オリジン間リソース共有 (Cross-Origin Resource Sharing, CORS) は、 HTTP ヘッダーベースの仕組みを使用して、あるオリジンで動作しているウェブアプリケーションに、異なるオリジンにある選択されたリソースへのアクセス権を与えるようブラウザーに指示するための仕組みです。ウェブアプリケーションは、自分とは異なるオリジン (ドメイン、プロトコル、ポート番号) にあるリソースをリクエストするとき、オリジン間 HTTP リクエストを実行します。
- コンテンツセキュリティポリシー (CSP)
コンテンツセキュリティポリシー (CSP) は、クロスサイトスクリプティング (Cross-site_scripting) やデータインジェクション攻撃などのような、特定の種類の攻撃を検知し、影響を軽減するために追加できるセキュリティレイヤーです。 これらの攻撃はデータの窃取からサイトの改ざん、マルウェアの拡散に至るまで、様々な目的に用いられます。
- コンテンツネゴシエーション
HTTP においてコンテンツネゴシエーション (content negotiation) は、同じ URI におけるさまざまな表現のリソースを提供するために使用する仕組みであり、ユーザーエージェントはどのリソースがユーザーにもっとも適しているか(例えば文書の言語はどれか、画像形式はどれか、コンテンツエンコーディングはどれか)を指定することができます。
- プロキシーサーバーとトンネリング
インターネットのさまざまなネットワークを移動するときに、プロキシーサーバーと HTTP トンネルは、 World Wide Web 上のコンテンツへのアクセスを容易にしています。プロキシーはユーザーのローカルコンピュータ、またはユーザーのコンピュータとインターネット上の送信先サーバーの間の任意の場所に配置できます。このページではプロキシーに関するいくつかの基本を概説し、いくつかの設定オプションを紹介します。
- プロトコルのアップグレードの仕組み
HTTP/1.1 プロトコルは、
Upgrade
ヘッダーフィールドを使用して、既に確立された接続を別のプロトコルにアップグレードするために使用することができる特別な仕組みを提供します。- ユーザーエージェント文字列を用いたブラウザーの判定
ブラウザーによって異なるウェブページまたはサービスを提供するのは、ふつうは良いことではありません。ウェブは使用しているブラウザーや機器に関係なく、誰からでもアクセスできるものです。ウェブサイトを開発する方法として、特定のブラウザーを対象にするのではなく、機能が利用できるかどうかに基づいたプログレッシブエンハンスメントにする方法があります。
- 典型的な HTTP セッション
HTTP のようなクライアントサーバープロトコルでは、セッションが 3 つの段階で構成されます。