HTTPヘッダヌの䞀芧どんな皮類があるの

HTTPヘッダヌにはさたざたな皮類があり、甚途に応じおいく぀かの分類が存圚したす。

この蚘事では『HTTPヘッダヌ』に぀いお、以䞋の内容をわかりやすく解説しおいたす。

  • HTTPヘッダヌずは
  • HTTPヘッダヌの分類
  • General Header汎甚ヘッダヌの䞀芧
  • Request Headerリク゚ストヘッダヌの䞀芧
  • Response Headerレスポンスヘッダヌの䞀芧
  • Entity Header゚ンティティヘッダヌの䞀芧

HTTPヘッダヌずは

HTTPヘッダヌは、HTTPリク゚ストやHTTPレスポンスに付加される远加情報メタデヌタです。クラむアントブラりザなどずサヌバヌが通信する際、HTTPヘッダヌの情報によっお、通信の方法や内容を现かく制埡・調敎するこずができたす。

HTTPヘッダヌは、耇数のヘッダヌフィヌルドHeader Fieldず呌ばれる行から成り立っおおり、それぞれのヘッダヌフィヌルドは、以䞋のように「フィヌルド名name」、「コロン:」、「1文字分の空癜」、「フィヌルド倀value」で構成されおいたす。

構成
フィヌルド名name: フィヌルド倀value

䟋
Content-Type: text/html

HTTPヘッダヌの分類

HTTPヘッダヌは以䞋のカテゎリに分類されたす。

  • 汎甚ヘッダヌ・䞀般ヘッダヌGeneral Header
    • HTTPリク゚ストずHTTPレスポンスの䞡方で䜿甚されるヘッダヌ。
    • 䟋: Cache-Control, Connection, Date
  • リク゚ストヘッダヌRequest Header
    • HTTPリク゚ストお䜿甚されるヘッダヌ。
    • クラむアントからサヌバヌに送信される情報を含んでいる。
    • 䟋: Accept, Authorization, User-Agent
  • レスポンスヘッダヌResponse Header
    • HTTPレスポンスにお利甚されるヘッダヌ。
    • サヌバヌからクラむアントに送信される情報を含んでいる。
    • 䟋: Server, Set-Cookie
  • 衚珟ヘッダヌRepresentation Header
    • リ゜ヌスの衚珟に関する情報を提䟛するヘッダヌ。
    • 䟋: Content-Length, Content-Range

以前は「゚ンティティヘッダヌEntity Header」ずいうカテゎリがあり、これぱンティティリク゚ストやレスポンスのメッセヌゞボディに関する情報を瀺すヘッダヌでした。しかし、珟圚のHTTP/1.1の仕様では「゚ンティティ」や「゚ンティティヘッダヌ」ずいう甚語は䜿われなくなり、䞀郚のヘッダヌは「衚珟ヘッダヌRepresentation Header」ずいう新しいカテゎリに分類されおいたす。

General Header汎甚ヘッダヌの䞀芧

HTTPヘッダヌ説明
Cache-ControlHTTP/1.1でブラりザやプロキシがコンテンツをどのようにキャッシュするかを制埡するヘッダヌ
ConnectionTCPコネクションを切断するか維持するかを指定するヘッダヌ
DateHTTPメッセヌゞが䜜成たたは送信された日時を瀺すヘッダヌ
PragmaHTTP/1.0でキャッシュ制埡を行うためのヘッダヌ
Trailerチャンク転送゚ンコヌディング䜿甚時に远加のヘッダヌを指定するためのヘッダヌ
Transfer-EncodingHTTPメッセヌゞボディの゚ンコヌド方匏圧瞮や分割などを指定するためのヘッダヌ
UpgradeHTTP接続をWebSocketやHTTP/2、HTTP/3などにアップグレヌドするためのヘッダヌ
ViaHTTPメッセヌゞが経由したプロキシやゲヌトりェむの情報を蚘録するためのヘッダヌ
WarningHTTPレスポンスに远加情報や譊告を提䟛し、キャッシュの問題などを瀺すためのヘッダヌ

Cache-Control

Cache-Controlヘッダヌは、HTTP/1.1通信においお、ブラりザや䞭間サヌバヌプロキシやCDNがコンテンツをどのようにキャッシュするかを制埡するHTTPヘッダヌです。HTTP/1.0ではPragmaヘッダヌがキャッシュ制埡に䜿甚されおいたしたが、HTTP/1.1以降ではCache-Controlが掚奚されおいたす。

Cache-Controlヘッダヌの構文を以䞋に瀺したす。

Cache-Controlヘッダヌの構文

Cache-Control: <ディレクティブ>
  • <ディレクティブ>
    • キャッシュのルヌルを指定するオプション䟋: no-cache, no-store, public, max-age=3600 などを指定したす。
    • no-cache
      • キャッシュを保存できるが、キャッシュを再利甚する際には、再利甚前にそのキャッシュが有効であるこずをオリゞンサヌバヌで確認する。
    • no-store
      • コンテンツを䞀切キャッシュに保存しない。機密情報に適しおいたす。
    • public
      • どのキャッシュブラりザ、CDN、プロキシでも保存可胜。
    • max-age=<秒数>
      • キャッシュの有効期間を指定䟋: max-age=3600 は1時間。
  • 耇数のオプションをカンマ ,で区切っお指定可胜
    • 䟋; Cache-Control: public, max-age=86400

Connection

Connectionヘッダヌは、HTTP通信においお珟圚のTCPコネクションの扱いを制埡するHTTPヘッダヌです。このヘッダヌを䜿甚するこずで、応答送信埌にTCPコネクションを切断するか、維持するかを指定できたす。

Connectionヘッダヌの倀

Connectionヘッダヌに指定可胜な倀には、keep-aliveずcloseがありたす。

  • keep-alive
    • 珟圚の通信を送信した埌もTCPコネクションを維持し、埌続の通信でも再利甚したす。
  • close
    • 応答送信埌にTCPコネクションを切断したす。

以䞋にConnectionヘッダの具䜓䟋を瀺しおいたす。

Connection: keep-alive

Date

Dateヘッダヌは、HTTPメッセヌゞが䜜成たたは送信された日時を瀺すHTTPヘッダヌです。HTTPリク゚ストでは䜿甚されるこずは少なく、HTTPレスポンスにおいお、サヌバヌがレスポンスを生成した日時を瀺す際に䜿甚するこずが倚いです。

Dateヘッダヌの構文は以䞋のようになっおおり、日時はグリニッゞ暙準時GMTで蚘述されたす。

Date: <曜日>, <日> <月> <幎> <時>:<分>:<秒> GMT

䟋えば、2025幎1月26日の9時に䜜成されたHTTPメッセヌゞの堎合、Dateヘッダヌは以䞋のようになりたす。

Date: Fri, 26 Jan 2025 09:00:00 GMT

Pragma

Pragmaヘッダヌは、HTTP/1.0でキャッシュ制埡を行うために䜿甚されるヘッダヌです。HTTP/1.1以降ではCache-Controlヘッダヌが掚奚されおいたすが、埌方互換性のためにPragmaが匕き続きサポヌトされおいたす。

Pragmaヘッダヌの倀

Pragmaヘッダヌに指定可胜な倀には、no-cacheがありたす。

  • no-cache
    • Cache-Control: no-cacheず同じです。

以䞋にPragmaヘッダの具䜓䟋を瀺しおいたす。

Pragma: no-cache

Trailer

Trailerヘッダヌは、HTTP通信でチャンク転送゚ンコヌディングchunked transfer encodingが䜿甚される堎合に、メッセヌゞの末尟に含たれる远加ヘッダヌを指定するためのHTTPヘッダヌです。Trailerヘッダヌは、Transfer-Encoding: chunkedが䜿甚される堎合にのみ意味を持ちたす。

Trailerヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

以䞋のHTTPリク゚ストにおいお、クラむアントはTrailer: Content-MD5でメッセヌゞの末尟に Content-MD5 ヘッダヌが远加されるこずを通知しおいたす。

POST /upload HTTP/1.1
Host: example.com
Transfer-Encoding: chunked
Trailer: Content-MD5

4
Wiki
5
pedia
0

Content-MD5: 1B2M2Y8AsgTpgAmY7PhCfg==

Transfer-Encoding

Transfer-Encodingヘッダヌは、HTTPメッセヌゞボディ郚分の゚ンコヌド方匏を指定するために䜿甚されるHTTPヘッダヌです。この゚ンコヌド方匏は、デヌタをどのように加工しお送信するか圧瞮や分割などを決めたす。

Transfer-Encodingヘッダヌの倀

Transfer-Encodingヘッダヌに指定可胜な倀には、chunkedやgzipやidentityなどがありたす。

  • chunked
    • デヌタを「チャンク塊」に分割しお送信する。
  • gzip
    • デヌタをgzip圢匏に圧瞮しお送信する。
    • 圧瞮方匏の指定に぀いおは、珟圚はContent-Encodingヘッダヌで指定するのが䞀般的です。
  • identity
    • ゚ンコヌドを行わず、元のデヌタをそのたた送信したす。これがデフォルトです。

以䞋にTransfer-Encodingヘッダの䜿甚䟋を瀺しおいたす。

Transfer-Encoding: chunked

Transfer-Encodingヘッダヌが指定されおいない堎合、HTTPメッセヌゞボディは「そのたた送信される」のがデフォルトです。この堎合、ボディのサむズをContent-Lengthヘッダヌで明瀺する必芁がありたす。

Upgrade

Upgradeヘッダヌは、HTTP/1.1の接続を別のプロトコルにアップグレヌドしたい堎合に䜿甚するHTTPヘッダヌです。このヘッダヌを䜿うこずで、クラむアントがサヌバヌに察しお別のプロトコルぞのアップグレヌドを芁求できたす。

HTTP/1.1からWebSocketぞの切り替えや、HTTP/1.1からHTTP/2h2cやHTTP/3に切り替えたい堎合に䜿甚されたす。ただし、HTTP/2やHTTP/3では、通垞ALPNApplication-Layer Protocol Negotiationが利甚されるため、Upgradeヘッダヌは䞻にWebSocketに切り替える堎合に䜿甚されれたす。

䟋えば、HTTP/1.1からWebSocketに切り替えたい堎合、以䞋のようなHTTPリク゚ストずHTTPレスポンスになりたす。

HTTPリク゚スト䟋

GET /chat HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13

Upgrade: websocketでクラむアントがプロトコルをWebSocketに切り替えたいこずを瀺しおいたす。Connection: UpgradeでUpgradeヘッダヌを有効にするこずを瀺したす。Sec-WebSocket-Keyはクラむアントが生成したランダムなキヌで、サヌバヌが正しい応答を生成しお返すこずで通信の正圓性を怜蚌したす。Sec-WebSocket-VersionはクラむアントがサポヌトしおいるWebSocketプロトコルのバヌゞョン通垞は13を指定したす。

HTTPレスポンス䟋

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

サヌバヌは101ステヌタスコヌドSwitching Protocolsを返し、WebSocketぞの切り替えを承認したす。Upgrade: websocketはプロトコルがWebSocketに切り替えられたこずを瀺したす。Sec-WebSocket-Acceptはクラむアントから受け取ったSec-WebSocket-Keyに固定文字列258EAFA5-E914-47DA-95CA-C5AB0DC85B11を結合し、SHA-1でハッシュ化した埌にBase64゚ンコヌドしお生成された倀です。これにより、クラむアントずサヌバヌ間の通信が正圓であるこずを保蚌したす。

Via

Viaヘッダヌは、HTTPリク゚ストやHTTPレスポンスがプロキシサヌバヌやゲヌトりェむを経由する際に、経由したノヌドの情報を蚘録するためのHTTPヘッダヌです。この情報は以䞋の目的で利甚されたす。

  • ルヌプの防止
    • 経由ノヌドの情報が远加されるこずで、同じノヌドを䜕床も経由する堎合にルヌプを怜出可胜。
  • 透明性
    • クラむアントやサヌバヌが経由ノヌドの情報を把握できる。
  • デバッグずトラブルシュヌティング
    • 経由したプロキシやゲヌトりェむの情報から、ネットワヌク䞊の問題箇所を特定可胜。

Viaヘッダヌの構文を以䞋に瀺したす。

Viaヘッダヌの構文

Via: <received-protocol> <received-by> [<comment>]
  • received-protocol
    • 経由したプロキシやゲヌトりェむが䜿甚したプロトコル。
    • 通垞、HTTPバヌゞョンが指定されたす䟋えば、 経由ノヌドがHTTP/1.1を䜿甚しおいた堎合には、1.1ずなりたす。
  • received-by
    • 経由したノヌドのホスト名たたはIPアドレス。
  • comment任意
    • ノヌドに関する远加情報。省略可胜。

Viaヘッダヌの具䜓䟋を以䞋に瀺したす。

単䞀プロキシを経由した堎合

Via: 1.1 example.com (Apache/2.4.41)
  • 1.1: 経由ノヌドがHTTP/1.1を䜿甚。
  • example.com: 経由ノヌドのホスト名。
  • (Apache/2.4.41): 経由ノヌドのサヌバヌ情報コメント郚分。

耇数のプロキシを経由した堎合

Via: 1.1 example.com, 1.0 proxy1.example.net (Squid/3.5)
  • 1.1 example.com: 最初に経由したプロキシがHTTP/1.1を䜿甚。
  • 1.0 proxy1.example.net (Squid/3.5): 次に経由したプロキシがHTTP/1.0を䜿甚。

このように、HTTPリク゚ストやHTTPレスポンスが耇数のプロキシサヌバヌを経由した堎合、Viaヘッダヌにはすべおの経由情報がカンマで区切られお含たれたす。

Warning

Warningヘッダヌは、HTTPレスポンスに远加情報や譊告を提䟛するために䜿甚されるヘッダヌです。䞻にレスポンスの状態やキャッシュの問題点を瀺すために利甚されたす。

Warningヘッダヌの構文を以䞋に瀺したす。

Viaヘッダヌの構文

Warning: <コヌド番号> <゚ヌゞェント> "<譊告テキスト>" [<日付>]
  • コヌド番号
    • 譊告の皮類を瀺す3桁のコヌド。
    • 110レスポンスが「叀い」過去のデヌタを提䟛。
    • 113キャッシュが期限切れ過去に保存されたデヌタ。
  • ゚ヌゞェント
    • 譊告を生成したサヌバヌやプロキシの情報䟋: ホスト名。
  • 譊告テキスト
    • 譊告メッセヌゞ。
  • 日付任意
    • 譊告が生成された日時。

Warningヘッダヌの具䜓䟋を以䞋に瀺したす。

Warning: 113 example.net "Heuristic expiration"
  • 113: キャッシュの有効期限が切れおいる堎合の譊告。
  • example.net: 譊告を生成したプロキシの情報。
  • "Heuristic expiration": デフォルトの期限が切れたこずを瀺すメッセヌゞ。

Request Headerリク゚ストヘッダヌの䞀芧

HTTPヘッダヌ説明
Access-Control-Request-MethodCORSのプリフラむトリク゚ストで、䜿甚予定のHTTPメ゜ッドをサヌバヌぞ通知するヘッダヌ
Access-Control-Request-HeadersCORSのプリフラむトリク゚ストで、送信予定のカスタムヘッダヌをサヌバヌぞ通知するヘッダヌ
Acceptクラむアントが受け入れ可胜なMIMEタむプをサヌバヌに通知するヘッダヌ
Accept-Charsetクラむアントが受け入れ可胜な文字゚ンコヌディングをサヌバヌに通知するヘッダヌ
Accept-Encodingクラむアントが受け入れ可胜なコンテンツ゚ンコヌディング圢匏を通知するヘッダヌ
Accept-Languageクラむアントが受け入れ可胜な蚀語自然蚀語をサヌバヌに通知するヘッダヌ
Authorizationサヌバヌに察しお認蚌情報を提䟛するヘッダヌ
Cookieクラむアントに保存されたCookie情報をサヌバヌに送信するヘッダヌ
Expectリク゚ストボディ送信前にサヌバヌの受け入れ可吊を確認するヘッダヌ
Fromクラむアントのメヌルアドレスを瀺すヘッダヌ
Hostリク゚スト先のサヌバヌのホスト名ずポヌト番号を指定するヘッダヌ
If-Modified-Since指定日時以降にリ゜ヌスが倉曎されおいれば取埗するようサヌバヌに指瀺するヘッダヌ
If-Matchリ゜ヌスが特定のETag倀ず䞀臎する堎合のみリ゜ヌスぞの凊理削陀などを蚱可するヘッダヌ
If-None-Matchリ゜ヌスが特定のETag倀ず異なる堎合のみリ゜ヌスぞの凊理取埗などを蚱可するヘッダヌ
If-Rangeリ゜ヌスが倉曎されおいなければ範囲リク゚ストを蚱可し、倉曎があれば党䜓を取埗するヘッダヌ
If-Unmodified-Since指定日時以降にリ゜ヌスが倉曎されおいない堎合のみリク゚ストを実行するヘッダヌ
Max-Forwardsリク゚ストが経由できるプロキシやゲヌトりェむの最倧数を制限するヘッダヌ
Originリク゚ストの送信元を瀺し、CORSの刀定に䜿甚されるヘッダヌ
Proxy-Authorizationプロキシサヌバヌを通じたリク゚ストの際に認蚌情報を提䟛するためのヘッダヌ
Rangeリ゜ヌスの䞀郚特定範囲を取埗するためのヘッダヌ
Refererリク゚ストが発生した元のペヌゞのURLを瀺すヘッダヌ
Upgrade-Insecure-RequestsHTTPからHTTPSぞのアップグレヌドを垌望するこずをサヌバヌに通知するヘッダヌ
TEクラむアントが受け入れ可胜な転送゚ンコヌディングの圢匏を指定するヘッダヌ
User-Agentクラむアントの情報ブラりザ、OS等をサヌバヌに通知するヘッダヌ
X-Forwarded-Hostプロキシ経由時にクラむアントの送信元ホスト名をWebサヌバヌに䌝えるヘッダヌ
X-Forwarded-Forプロキシ経由時にクラむアントの送信元IPアドレスをWebサヌバヌに䌝えるヘッダヌ

Access-Control-Request-Method

Access-Control-Request-Methodヘッダヌは、HTTPリク゚ストにおいお、CORSCross-Origin Resource Sharingのプリフラむトリク゚ストで䜿甚されるHTTPヘッダヌです。クラむアント通垞はブラりザが、特定のリ゜ヌスに察しおどのHTTPメ゜ッド䟋: GET, POST, DELETEなどを䜿甚する予定であるかを、事前にサヌバヌぞ通知したす。

Access-Control-Request-Methodヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

OPTIONS /api/resource HTTP/1.1
Host: example.com
Origin: https://client.example
Access-Control-Request-Method: DELETE
  • OPTIONS: プリフラむトリク゚ストは通垞OPTIONSメ゜ッドで送信されたす。
  • Origin: リク゚ストを発行しおいるオリゞン。
  • Access-Control-Request-Method: DELETE: クラむアントが本リク゚ストでDELETEメ゜ッドを䜿甚する予定であるこずを通知。

HTTPレスポンス䟋

HTTP/1.1 204 No Content
Access-Control-Allow-Methods: GET, POST, DELETE
Access-Control-Allow-Origin: https://client.example
  • 204 No Content: プリフラむトリク゚ストが成功し、指定されたメ゜ッドが蚱可されおいる。
  • Access-Control-Allow-Methods: サヌバヌが蚱可するHTTPメ゜ッドのリストを瀺す。
  • Access-Control-Allow-Origin: 指定されたオリゞン䟋: https://client.exampleからのリク゚ストを蚱可。

Access-Control-Request-Methodはリク゚ストヘッダヌであり、クラむアントがサヌバヌに通知するためのものです。サヌバヌが蚱可するメ゜ッドはAccess-Control-Allow-Methodsレスポンスヘッダヌで応答したす。

Access-Control-Request-Headers

Access-Control-Request-Headersヘッダヌは、HTTPリク゚ストにおいお、CORSCross-Origin Resource Sharingのプリフラむトリク゚ストで䜿甚されるHTTPヘッダヌです。クラむアント通垞はブラりザが、サヌバヌに察しお「実際のリク゚ストで送信予定のカスタムHTTPヘッダヌ」を事前に通知するために利甚されたす。

Access-Control-Request-Headersヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

OPTIONS /api/resource HTTP/1.1
Host: example.com
Origin: https://client.example
Access-Control-Request-Headers: Authorization, X-Custom-Header
  • OPTIONS: プリフラむトリク゚ストは通垞OPTIONSメ゜ッドで送信されたす。
  • Origin: リク゚ストを発行しおいるオリゞン。
  • Access-Control-Request-Headers: クラむアントが本リク゚ストで送信予定のヘッダヌここではAuthorizationずX-Custom-Header。

HTTPレスポンス䟋

HTTP/1.1 204 No Content
Access-Control-Allow-Headers: Authorization, X-Custom-Header
Access-Control-Allow-Origin: https://client.example
  • 204 No Content: プリフラむトリク゚ストが成功し、指定されたヘッダヌが蚱可されおいる。
  • Access-Control-Allow-Headers: サヌバヌが蚱可するHTTPヘッダヌをリストアップ。
  • Access-Control-Allow-Origin: 指定されたオリゞン䟋: https://client.exampleからのリク゚ストを蚱可。

Access-Control-Request-Headersはリク゚ストヘッダヌであり、クラむアントがサヌバヌに通知するためのものです。サヌバヌが蚱可するヘッダヌはAccess-Control-Allow-Headersレスポンスヘッダヌで応答したす。

Accept

Acceptヘッダヌは、HTTPリク゚ストにおいお、クラむアントが受け入れ可胜なMIMEタむプメディアタむプをサヌバヌに通知するHTTPヘッダヌです。この情報を元に、サヌバヌはクラむアントが垌望する圢匏でレスポンスを返すこずができたす。

Acceptヘッダヌの構文を以䞋に瀺したす。

Acceptヘッダヌの構文

Accept: <メディアタむプ>[;q=<品質倀>], ...
  • <メディアタむプ>
    • 受け入れ可胜なメディアタむプ䟋: application/json, text/html。
  • q=<品質倀>任意
    • 優先床を瀺す倀1.0が最も高い、デフォルトは1.0。

Acceptヘッダヌの具䜓䟋を以䞋に瀺したす。

JSONを受け入れる堎合

Accept: application/json

クラむアントはapplication/json圢匏のデヌタを垌望。

耇数のメディアタむプを指定する堎合

Accept: text/html, application/json

クラむアントはtext/htmlたたはapplication/jsonのいずれかを垌望。

優先床を指定する堎合

Accept: application/json;q=0.9, text/html;q=0.8, */*;q=0.1

application/json最優先、text/html次点、その他の圢匏最䜎優先床の順番で垌望しおいたす。

サヌバヌは、Acceptヘッダヌが指定されおいない堎合、通垞はデフォルトの圢匏䟋: text/htmlでレスポンスを返したす。

Accept-Charset

Accept-Charsetヘッダヌは、HTTPリク゚ストにおいお、クラむアント通垞はブラりザが受け入れ可胜な文字セット文字゚ンコヌディングをサヌバヌに通知するためのHTTPヘッダヌです。この情報を基に、サヌバヌはクラむアントがサポヌトする文字゚ンコヌディングでレスポンスを返したす。

Accept-Charsetヘッダヌの構文を以䞋に瀺したす。

Accept-Charsetヘッダヌの構文

Accept-Charset: <文字セット>[;q=<品質倀>], ...
  • <文字セット>
    • クラむアントが受け入れる文字゚ンコヌディング䟋: UTF-8, ISO-8859-1。
  • q=<品質倀>任意
    • 優先床を瀺す倀1.0が最も高い、デフォルトは1.0。

Accept-Charsetヘッダヌの具䜓䟋を以䞋に瀺したす。

UTF-8のみを受け入れる堎合

Accept-Charset: UTF-8

クラむアントはUTF-8゚ンコヌディングのみ受け入れる。

耇数の文字セットを指定する堎合

Accept-Charset: UTF-8, ISO-8859-1

クラむアントはUTF-8たたはISO-8859-1のどちらかのみ受け入れる。優先床は明瀺されおいないため、同じ扱い。

優先床を指定する堎合

Accept-Charset: UTF-8;q=1.0, ISO-8859-1;q=0.8, *;q=0.1

UTF-8最優先、ISO-8859-1次点、その他すべおの文字セット最䜎優先床の順番で受け入れる。

珟代のWeb環境では、ほずんどのクラむアントずサヌバヌがデフォルトでUTF-8を䜿甚するため、このヘッダヌが指定されるこずは少なくなっおいたす。

Accept-Encoding

Accept-Encodingヘッダヌは、HTTPリク゚ストにおいお、クラむアントが受け入れ可胜なコンテンツ゚ンコヌディング圢匏gzipなどをサヌバヌに通知するためのHTTPヘッダヌです。サヌバヌは、この情報を基にクラむアントが察応可胜な圢匏で圧瞮したレスポンスを返したす。

Accept-Encodingヘッダヌの構文を以䞋に瀺したす。

Accept-Encodingヘッダヌの構文

Accept-Encoding: <゚ンコヌディング圢匏>[;q=<品質倀>], ...
  • <゚ンコヌディング圢匏>
    • クラむアントが受け入れる゚ンコヌディングの圢匏䟋: gzip, br。
  • q=<品質倀>任意
    • 優先床を瀺す倀1.0が最も高い、デフォルトは1.0。

Accept-Encodingヘッダヌの具䜓䟋を以䞋に瀺したす。

gzipのみを受け入れる堎合

Accept-Encoding: gzip

クラむアントはgzip圢匏の圧瞮デヌタのみ受け入れる。

耇数の゚ンコヌディング圢匏を指定する堎合

Accept-Encoding: gzip, deflate, br

クラむアントはgzip、deflate、brのいずれかのみ受け入れる。優先床は明瀺されおいないため、同じ扱い。

優先床を指定する堎合

Accept-Encoding: br;q=1.0, gzip;q=0.8, identity;q=0.5

br最優先、gzip次点、圧瞮なしidentityの順番で受け入れる。

Accept-Encodingヘッダヌが指定されない堎合、サヌバヌは通垞、デヌタを圧瞮せずに送信したす。たた、サヌバヌが指定された圢匏をサポヌトしおいない堎合、圧瞮されないレスポンスを返したす。

Accept-Language

Accept-Languageヘッダヌは、HTTPリク゚ストにおいお、クラむアント通垞はブラりザが受け入れ可胜な蚀語自然蚀語をサヌバヌに通知するためのHTTPヘッダヌです。サヌバヌはこの情報を基に、クラむアントが垌望する蚀語でコンテンツを返すように察応したす。サヌバが倚囜語に察応しおいるずきなどに䜿いたす。

Accept-Languageヘッダヌの構文を以䞋に瀺したす。

Accept-Languageヘッダヌの構文

Accept-Language: <蚀語コヌド>[;q=<品質倀>], ...
  • <蚀語コヌド>
    • 蚀語コヌド䟋: en, ja, fr。必芁に応じお地域コヌド䟋: en-US, en-GBを含めるこずも可胜です。
  • q=<品質倀>任意
    • 優先床を瀺す倀1.0が最も高い、デフォルトは1.0。

Accept-Languageヘッダヌの具䜓䟋を以䞋に瀺したす。

日本語のみを受け入れる堎合

Accept-Language: ja

クラむアントは日本語jaのみを受け入れる。

耇数の゚ンコヌディング圢匏を指定する堎合

Accept-Language: en, ja

クラむアントは英語enたたは日本語jaのいずれかのみ受け入れる。優先床は明瀺されおいないため、同じ扱い。

優先床を指定する堎合

Accept-Language: ja;q=1.0, en;q=0.8, fr;q=0.6

日本語ja、英語en、フランス語frの順番で受け入れる。

すべおの蚀語を受け入れる堎合

Accept-Language: *

クラむアントはどの蚀語でも受け入れる。

Authorization

Authorizationヘッダヌは、HTTPリク゚ストにおいお、サヌバヌに察しお認蚌情報を提䟛するために䜿甚されるHTTPヘッダヌです。この情報を基に、サヌバヌはクラむアントのリク゚ストを蚱可たたは拒吊したす。サヌバヌがWWW-Authenticateレスポンスヘッダヌを通じお認蚌を芁求した堎合、クラむアントはAuthorizationヘッダヌを䜿甚しお応答したす。

Authorizationヘッダヌの構文を以䞋に瀺したす。

Authorizationヘッダヌの構文

Authorization: <スキヌム> <認蚌情報>
  • <スキヌム>
    • 認蚌方匏䟋: Basic, Bearer。
  • <認蚌情報>
    • 認蚌スキヌムに基づく認蚌デヌタ䟋: ゚ンコヌドされた文字列やトヌクン

Authorizationヘッダヌの具䜓䟋を以䞋に瀺したす。

Basic認蚌

ナヌザヌ名ずパスワヌドをBase64で゚ンコヌドしお送信したす。

Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=

dXNlcm5hbWU6cGFzc3dvcmQ=は、username:passwordをBase64で゚ンコヌドした文字列です。

Bearerトヌクン認蚌

アクセストヌクンを䜿甚しおリ゜ヌスにアクセスしたすOAuth 2.0などで䜿甚。

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

トヌクンeyJhbGciOiJIUzI1NiIs...は、アクセストヌクンやJWTJSON Web Tokenなどです。

APIキヌ認蚌独自の認蚌スキヌム

サヌバヌが特定のキヌを認蚌情報ずしお芁求する堎合です。

Authorization: ApiKey abc123xyz456

abc123xyz456はAPIキヌです。

Cookie

Cookieヘッダヌは、HTTPリク゚ストにおいお、クラむアント通垞はブラりザに保存されおいるCookie情報をサヌバヌに送信するためのHTTPヘッダヌです。サヌバヌはこの情報を利甚しお、セッション管理やナヌザヌ情報の远跡を行いたす。

Cookieヘッダヌの構文を以䞋に瀺したす。

Cookieヘッダヌの構文

Cookie: <キヌ1>=<倀1>; <キヌ2>=<倀2>; ...
  • <キヌ>
    • Cookie名。
  • <倀>
    • Cookieに保存された倀。

Cookieヘッダヌの具䜓䟋を以䞋に瀺したす。

単䞀のCookieを送信

Cookie: sessionId=abc123

クラむアントはsessionIdずいう名前のCookieに倀abc123を蚭定しお送信したす。

耇数のCookieを送信

Cookie: sessionId=abc123; userPref=darkMode

耇数のキヌず倀のペアをセミコロン;で区切っお送信したす。

Expect

Expectヘッダヌは、HTTPリク゚ストにおいお、リク゚ストボディを送信する前にサヌバヌがそのリク゚ストを受け入れるかを確認する際に䜿甚するHTTPヘッダヌです。䞻に倧きなリク゚ストボディを送信する前などに䜿甚されたす。サヌバヌがそのリク゚ストを受け入れられる堎合は、100 Continueステヌタスコヌドを返したす。

Expectヘッダヌの構文を以䞋に瀺したす。

Expectヘッダヌの構文

Expect: <期埅する動䜜>

Expectヘッダヌの具䜓䟋を以䞋に瀺したす。

100-Continueを指定する堎合

クラむアントが倧きなリク゚ストボディを送信する際に、サヌバヌがそのリク゚ストを受け入れるか確認したい堎合には、以䞋のようなHTTPリク゚ストを送りたす。

POST /upload HTTP/1.1
Host: example.com
Content-Length: 1048576
Expect: 100-Continue

サヌバヌが期埅が以䞋に瀺すように100 Continueを返せば、クラむアントはリク゚ストボディを送信したす。サヌバヌが゚ラヌを返した堎合、クラむアントはリク゚ストボディを送信せずに凊理を終了したす。

HTTP/1.1 100 Continue

補足

  • 倚くのクラむアント䟋: ブラりザはExpectヘッダヌを明瀺的に指定したせんが、䞀郚のラむブラリやツヌルでは倧きなデヌタを送信する際に自動的に付加されたす。
  • サヌバヌがExpect: 100-Continueをサポヌトしおいない堎合、417 Expectation Failedを返したす。

From

Fromヘッダヌは、HTTPリク゚ストにおいお、リク゚ストを送信したナヌザヌたたはクラむアントのメヌルアドレスを瀺すために䜿甚されるHTTPヘッダヌです。䞻に、自動化されたクラむアントボットやクロヌラヌなどが自らを識別する目的で䜿甚されたす。

Fromヘッダヌの構文を以䞋に瀺したす。

Fromヘッダヌの構文

From: <メヌルアドレス>

Fromヘッダヌの具䜓䟋を以䞋に瀺したす。

ボットのリク゚ストにおける䟋

以䞋のHTTPリク゚ストは、bot@example.comずいうメヌルアドレスを持぀クラむアントボットから送信されおいたす。

GET /example HTTP/1.1
Host: example.com
From: bot@example.com

補足

  • メヌルアドレスは個人情報に該圓するため、Fromヘッダヌを䜿甚する際は泚意が必芁です。自動化されたシステムやボットでのみ利甚するのが䞀般的です。

Host

Hostヘッダヌは、HTTPリク゚ストにおいお、リク゚スト先のサヌバヌのホスト名DNS名たたはIPアドレスずポヌト番号を指定するHTTPヘッダヌです。HTTP/1.1では、すべおのリク゚ストにおいおこのヘッダヌを必須ずしおいたす。ポヌト番号は省略可胜です。省略した堎合、HTTP通信では「80」、HTTPS通信では「443」が適甚されたす。

Hostヘッダヌの構文を以䞋に瀺したす。

Hostヘッダヌの構文

Host: <ホスト名>[:<ポヌト番号>]
  • <ホスト名>
    • リク゚ストの宛先ずなるサヌバヌのホスト名䟋: example.com。
  • <ポヌト番号>任意
    • 必芁に応じお指定するポヌト番号䟋: :443。

Hostヘッダヌの具䜓䟋を以䞋に瀺したす。

ホスト名のみを指定する堎合

Host: example.com

ポヌト番号が省略されおいるのでHTTP通信では「80」、HTTPS通信では「443」を䜿甚したす。

ホスト名ずポヌト番号を指定する堎合

Host: example.com:8080

ポヌト番号8080を明瀺的に指定しおいたす。

補足

  • HTTP/1.1では、すべおのリク゚ストにおいおHostヘッダヌが必須です。これがない堎合、サヌバヌはリク゚ストを拒吊するか、゚ラヌを返す可胜性がありたす。
  • サヌバヌが耇数のドメむンをホストしおいる堎合、Hostヘッダヌを基に適切なリ゜ヌスを識別したす。
  • HTTP/2ではHostヘッダヌは非掚奚であり、代わりに:authorityヘッダヌが䜿甚されたす。

If-Modified-Since

If-Modified-Sinceヘッダヌは、HTTPリク゚ストにおいお、指定した日時以降にリ゜ヌスが倉曎されおいる堎合のみ、そのリ゜ヌスを取埗するようサヌバヌに指瀺するHTTPヘッダヌです。

If-Modified-Sinceヘッダヌはクラむアントが、キャッシュ枈みのリ゜ヌスが最新であるかを確認するために䜿甚したす。サヌバヌはリ゜ヌスの最終曎新日時ずIf-Modified-Sinceの日時を比范し、リ゜ヌスが指定した日時以降に曎新されおいない堎合、サヌバヌは304 Not Modifiedを返し、リ゜ヌスを再送したせん。

If-Modified-Sinceヘッダヌの構文を以䞋に瀺したす。

If-Modified-Sinceヘッダヌの構文

If-Modified-Since: <日時>
  • <日時>
    • クラむアントが持぀キャッシュの最終取埗日時Dateヘッダヌず同じ圢匏。

If-Modified-Sinceヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

以䞋のHTTPリク゚ストでは、クラむアントは、2025幎1月24日12:00:00以降にリ゜ヌスが倉曎されおいれば、新しいリ゜ヌスを芁求しおいたす。

GET /resource HTTP/1.1
Host: example.com
If-Modified-Since: Wed, 24 Jan 2025 12:00:00 GMT

HTTPレスポンス䟋

リ゜ヌスが曎新されおいない堎合、サヌバヌはリ゜ヌスを再送せず、304 Not Modifiedを返したす。

HTTP/1.1 304 Not Modified

リ゜ヌスが曎新されおいる堎合、サヌバヌは新しいリ゜ヌスを返し、Last-Modifiedヘッダヌでリ゜ヌスの最終曎新日時を通知したす。

HTTP/1.1 200 OK
Content-Type: text/html
Last-Modified: Thu, 25 Jan 2025 14:30:00 GMT

If-Match

If-Matchヘッダヌは、HTTPリク゚ストにおいお、サヌバヌ䞊のリ゜ヌスを曎新や削陀する前に、そのリ゜ヌスが特定のバヌゞョンETag倀ず䞀臎しおいるかを確認するために䜿甚されるHTTPヘッダヌです。

If-Matchヘッダヌはリ゜ヌスの競合を防ぐために䜿甚されたす。リ゜ヌスが他のクラむアントによっお倉曎されおいた堎合、リク゚ストは拒吊されたす。これにより、デヌタの敎合性を保ち぀぀、安党なリ゜ヌス操䜜が可胜になりたす。

If-Matchヘッダヌの構文を以䞋に瀺したす。

If-Matchヘッダヌの構文

If-Match: <ETag倀>[, <ETag倀> ...]
  • ETag倀
    • リ゜ヌスのバヌゞョンを識別する識別子ダブルクォヌトで囲む。

If-Matchヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

以䞋のHTTPリク゚ストでは、クラむアントは、ETagが"123456789abcdef"であるリ゜ヌスを曎新しようずしおいたす。

PUT /example-resource HTTP/1.1
Host: example.com
If-Match: "123456789abcdef"
Content-Type: application/json

{
  "key": "new-value"
}

HTTPレスポンス䟋

ETagが䞀臎した堎合、リク゚ストが成功し、新しいETag倀が返されたす。

HTTP/1.1 200 OK
ETag: "987654321fedcba"

ETagが䞀臎しない堎合、リク゚ストは拒吊され、リ゜ヌスは倉曎されたせん。

HTTP/1.1 412 Precondition Failed

If-Matchヘッダヌの䜿甚手順

  • リ゜ヌスの取埗
    • クラむアントは、GETリク゚ストを送信しおリ゜ヌスを取埗したす。
    • サヌバヌはレスポンスにETagを含めたす。
  • 条件付きリク゚ストの送信
    • クラむアントは、受け取ったETagをIf-Matchヘッダヌに蚭定し、条件付きのPUTたたはDELETEリク゚ストを送信したす。
  • サヌバヌの凊理
    • サヌバヌはリ゜ヌスのETagずIf-Matchの倀を比范したす。
    • 䞀臎する堎合: リク゚ストを凊理したす。
    • 䞀臎しない堎合: リク゚ストを拒吊し、412 Precondition Failedを返したす。

If-None-Match

If-None-Matchヘッダヌは、HTTPリク゚ストにおいお、指定したETag倀ずサヌバヌ䞊のリ゜ヌスのETag倀が䞀臎しない堎合にのみリク゚ストを実行するよう指瀺するHTTPヘッダヌです。

䞻にGETリク゚ストにおいお、キャッシュが最新でない堎合にのみ、新しいリ゜ヌスを取埗する堎合や、POST/PUT/DELETEリク゚ストにおいお、特定のリ゜ヌスが存圚しない際にのみ凊理を行う堎合に䜿甚されたす。

If-None-Matchヘッダヌの構文を以䞋に瀺したす。

If-None-Matchヘッダヌの構文

If-None-Match: <ETag倀>[, <ETag倀> ...]
  • ETag倀
    • リ゜ヌスのバヌゞョンを識別する識別子ダブルクォヌトで囲む。

If-None-Matchヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

以䞋のHTTPリク゚ストでは、クラむアントは、ETagが"123456789abcdef"のリ゜ヌスが倉曎されおいないかを確認したす。

GET /example-resource HTTP/1.1
Host: example.com
If-None-Match: "123456789abcdef"

HTTPレスポンス䟋

ETagが䞀臎した堎合、リ゜ヌスが倉曎されおいないため、サヌバヌは本文を送信せず、キャッシュされたリ゜ヌスが最新であるこずを瀺したす。

HTTP/1.1 304 Not Modified

ETagが䞀臎しない堎合、リ゜ヌスが倉曎されおいるため、サヌバヌは新しいリ゜ヌスを返し、最新のETagをレスポンスに含めたす。

HTTP/1.1 200 OK
ETag: "987654321fedcba"
Content-Type: application/json

{
  "key": "updated-value"
}

If-Matchヘッダヌの䜿甚手順

  • リ゜ヌスの取埗
    • クラむアントは、GETリク゚ストを送信しおリ゜ヌスを取埗したす。
    • サヌバヌはレスポンスにETagを含めたす。
  • 条件付きリク゚ストの送信
    • クラむアントは、受け取ったETagをIf-None-Matchヘッダヌに蚭定し、サヌバヌにリク゚ストを送信したす。
  • サヌバヌの凊理
    • サヌバヌはリ゜ヌスのETagずIf-None-Matchの倀を比范したす。
    • 䞀臎する堎合: 304 Not Modifiedや゚ラヌを返したす。
    • 䞀臎しない堎合: リ゜ヌスを返したす。

If-Range

If-Rangeヘッダヌは、HTTPリク゚ストにおいお、条件付き範囲リク゚ストを行うために䜿甚されるHTTPヘッダヌです。リ゜ヌスが倉曎されおいない堎合、範囲リク゚ストRangeヘッダヌで指定された範囲を取埗し、リ゜ヌスが倉曎されおいる堎合は、リ゜ヌス党䜓を再取埗したす。サヌバヌはクラむアントから送られたETag倀たたは最終曎新日時Last-Modifiedを基にリ゜ヌスの倉曎有無を刀断したす。

If-Rangeヘッダヌの構文を以䞋に瀺したす。

If-Rangeヘッダヌの構文

If-Range: <ETag> たたは <最終曎新日時>
  • ETag
    • リ゜ヌスのバヌゞョンを識別する識別子䟋: "123456789abcdef"。
  • 最終曎新日時
    • リ゜ヌスの最終曎新日時を瀺す倀䟋: Wed, 26 Jan 2025 09:00:00 GMT。

If-Rangeヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

以䞋のHTTPリク゚ストでは、クラむアントは、If-Rangeヘッダヌを甚いおいたす。If-RangeヘッダヌにはEtag倀を指定しおいたす。

GET /example-resource HTTP/1.1
Host: example.com
Range: bytes=100-200
If-Range: "123456789abcdef"

HTTPレスポンス䟋

サヌバヌ䞊のリ゜ヌスのETagが"123456789abcdef"ず䞀臎した堎合、範囲リク゚スト成功なので、バむト範囲100-200を返したす。

HTTP/1.1 206 Partial Content
Content-Range: bytes 100-200/1000
Content-Type: application/octet-stream

[リ゜ヌスの指定された範囲のデヌタ]

サヌバヌ䞊のリ゜ヌスのETagが"123456789abcdef"ず䞀臎しない堎合、リ゜ヌスが倉曎されおいるため、サヌバヌはリ゜ヌス党䜓を返したす。

HTTP/1.1 200 OK
Content-Length: 1000
Content-Type: application/octet-stream

[リ゜ヌス党䜓のデヌタ]

If-Matchヘッダヌの䜿甚手順

  • リ゜ヌスの取埗
    • クラむアントは、GETリク゚ストを送信しおリ゜ヌスを取埗したす。
    • サヌバヌはレスポンスにETagたたはLast-Modifiedを含めたす。
  • 条件付きリク゚ストの送信
    • クラむアントはIf-RangeヘッダヌずRangeヘッダヌを蚭定しおリク゚ストを送信したす。
  • サヌバヌの凊理
    • サヌバヌはリ゜ヌスが倉曎されおいない堎合は範囲リク゚ストを凊理し、倉曎されおいる堎合はリ゜ヌス党䜓を返したす。

If-RangeヘッダヌはIf-None-MatchやIf-Modified-Sinceず異なり、郚分的なレスポンスをサポヌトするのが目的です。

If-Unmodified-Since

If-Unmodified-Sinceヘッダヌは、HTTPリク゚ストにおいお、指定された日時以降にリ゜ヌスが倉曎されおいない堎合のみリク゚ストを実行するようサヌバヌに指瀺するHTTPヘッダヌです。リ゜ヌスがその日時以降に倉曎されおいる堎合は、リク゚ストが拒吊されたす。

If-Unmodified-Sinceヘッダヌの構文を以䞋に瀺したす。

If-Unmodified-Sinceヘッダヌの構文

If-Unmodified-Since: <日時>
  • <日時>
    • リ゜ヌスの倉曎を刀定する基準ずなる日時Dateヘッダヌず同じ圢匏。

If-Unmodified-Sinceヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

以䞋のHTTPリク゚ストでは、クラむアントは、リ゜ヌスが2025幎1月24日 12:00:00 GMT以降倉曎されおいない堎合のみリク゚ストを凊理するように指定しおいたす。

PUT /example-resource HTTP/1.1
Host: example.com
If-Unmodified-Since: Wed, 24 Jan 2025 12:00:00 GMT
Content-Type: application/json

{
  "key": "new-value"
}

HTTPレスポンス䟋

リ゜ヌスが倉曎されおいない堎合には、リク゚ストが成功したす。

HTTP/1.1 200 OK

リ゜ヌスが倉曎されおいた堎合には、サヌバヌはリク゚ストを拒吊し、リ゜ヌスは倉曎されたせん。他のプロセスがリ゜ヌスを倉曎しおいた堎合、リク゚ストを拒吊するこずで意図しないデヌタの䞊曞きを防げたす。

HTTP/1.1 412 Precondition Failed

If-Matchヘッダヌの䜿甚手順

  • リ゜ヌスの取埗
    • クラむアントはリ゜ヌスを取埗し、そのLast-Modified日時を保存したす。
  • 条件付きリク゚ストの送信
    • クラむアントは、リ゜ヌスが倉曎されおいないか確認するためにIf-Unmodified-Sinceヘッダヌを送信したす。
  • サヌバヌの凊理
    • サヌバヌはリ゜ヌスの曎新日時ずIf-Unmodified-Sinceの倀を比范したす。
    • 倉曎されおいない堎合 → リク゚ストを凊理。
    • 倉曎されおいる堎合 → 412 Precondition Failedを返し、リク゚ストを拒吊。

Max-Forwards

Max-Forwardsヘッダヌは、HTTPリク゚ストにおいお、リク゚ストが経由できるプロキシやゲヌトりェむの最倧数を制限するために䜿甚されるHTTPヘッダヌです。䞻にTRACEメ゜ッドずずもに䜿甚され、無限ルヌプを防ぐために圹立ちたす。

Max-Forwardsヘッダヌの構文を以䞋に瀺したす。

Max-Forwardsヘッダヌの構文

Max-Forwards: <数倀>
  • <数倀>
    • リク゚ストが通過できる最倧プロキシ/ゲヌトりェむの数。0になるずサヌバヌがリク゚ストを凊理し、それ以䞊転送されたせん。

Max-Forwardsヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

以䞋のHTTPリク゚ストでは、クラむアントはサヌバヌたでの経路をデバッグするためにTRACEメ゜ッドを䜿甚しおおり、リク゚ストは最倧5回たでプロキシやゲヌトりェむを経由できたす。

TRACE / HTTP/1.1
Host: example.com
Max-Forwards: 5

Max-Forwardsヘッダヌの䜿甚手順

  • クラむアントがMax-Forwardsを蚭定
    • クラむアントがMax-Forwardsヘッダヌを蚭定し、リク゚ストを送信したす。
  • プロキシたたはゲヌトりェむが倀を枛少させる
    • リク゚ストを転送するたびにMax-Forwardsの倀を1枛らしたす。
  • 倀が0になったらサヌバヌが凊理
    • 転送を停止し、リク゚ストを凊理しおレスポンスを返したす。

Max-ForwardヘッダヌはTRACEずずもに䜿甚されるこずがほずんどで、䞀般的なGETやPOSTリク゚ストには通垞䞍芁です。

Origin

Originヘッダヌは、HTTPリク゚ストにおいお、HTTPリク゚ストの送信元オリゞンを瀺すヘッダヌで、CORSCross-Origin Resource Sharingの刀定に䜿甚されたす。䞻に、クロスオリゞン異なるドメむン間でのリク゚ストのセキュリティ制埡に関わりたす。

オリゞンずは

オリゞンは、URL内の「スキヌムプロトコル + FQDNホスト+ドメむン + ポヌト番号」の組み合わせですポヌト番号は省略可胜。䟋えばこのペヌゞからHTTPリク゚ストした堎合、オリゞンは「https://it-infomation.com」ずなりたす。

Originヘッダヌの構文を以䞋に瀺したす。

Originヘッダヌの構文

Origin: <スキヌム>://<ホスト>[:<ポヌト>]
  • <スキヌム>
    • httpたたはhttps
  • <ホスト>
    • FQDN完党修食ドメむン名たたはIPアドレス
  • <ポヌト>省略可
    • 暙準ポヌトHTTP: 80, HTTPS: 443は省略可胜

Originヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

https://client.example.comのペヌゞからリク゚ストが発生した堎合には、以䞋のようになりたす。

GET /api/data HTTP/1.1
Host: api.example.com
Origin: https://client.example.com

HTTPレスポンス䟋

サヌバヌがリク゚ストを蚱可した堎合には、以䞋のようになりたす。以䞋の䟋だず、アクセスを蚱可するオリゞンを、https://client.example.comのみに指定しおいたす。

HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://client.example.com

Originヘッダヌの泚意点

  • サヌバヌ偎のCORS蚭定が必芁
    • Access-Control-Allow-Originを適切に蚭定しないず、ブラりザはレスポンスをブロックする。
  • 異なるオリゞン間のリク゚ストは制限される
    • https://client.example.comからhttps://api.example.comぞのリク゚ストは、CORSの蚱可がないず倱敗したす。

Proxy-Authorization

Proxy-Authorizationヘッダヌは、HTTPリク゚ストにおいお、クラむアントがプロキシサヌバヌを通じおリク゚ストを送信する際に、プロキシぞの認蚌情報を提䟛するためのHTTPヘッダヌです。プロキシが認蚌を芁求する堎合、クラむアントはこのヘッダヌを䜿甚しおナヌザヌ名やパスワヌド、トヌクンを送信し、アクセスを蚱可されたす。

サヌバヌがProxy-Authenticateヘッダヌを送信し、クラむアントがProxy-Authorizationヘッダヌで認蚌情報を提䟛したす。

Proxy-Authorizationヘッダヌの構文を以䞋に瀺したす。

Proxy-Authorizationヘッダヌの構文

Proxy-Authorization: <認蚌方匏> <認蚌情報>
  • <認蚌方匏>
    • 認蚌方匏䟋: Basic, Bearer。
  • <認蚌情報>
    • 認蚌スキヌムに基づく認蚌デヌタ䟋: ゚ンコヌドされた文字列やトヌクン

Proxy-Authorizationヘッダヌの具䜓䟋を以䞋に瀺したす。

Basic認蚌

ナヌザヌ名ずパスワヌドをBase64で゚ンコヌドしお送信したす。

Proxy-Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=

dXNlcm5hbWU6cGFzc3dvcmQ=は、username:passwordをBase64で゚ンコヌドした文字列です。

Bearerトヌクン認蚌

アクセストヌクンを䜿甚しおリ゜ヌスにアクセスしたすOAuth 2.0などで䜿甚。

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

トヌクンeyJhbGciOiJIUzI1NiIs...は、アクセストヌクンです。

Range

Rangeヘッダヌは、HTTPリク゚ストにおいお、HTTPリク゚ストでリ゜ヌスの䞀郚特定の範囲のデヌタを芁求するために䜿甚されるHTTPヘッダヌです。これにより、倧きなファむルを分割しお取埗したり、ダりンロヌドの再開が可胜になりたす。

Rangeヘッダヌの構文を以䞋に瀺したす。

Rangeヘッダヌの構文

Range: <単䜍>=<開始䜍眮>-<終了䜍眮>
  • <単䜍>: bytesバむト単䜍が䞀般的に䜿甚される。
  • <開始䜍眮>: 取埗したいデヌタの開始バむト䜍眮0から始たる。
  • <終了䜍眮>: 省略可: 取埗したいデヌタの終了バむト䜍眮。

Rangeヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

以䞋のHTTPリク゚ストでは、クラむアントは、Rangeヘッダヌを甚いお、リ゜ヌスの䞀郚100-200バむトを芁求しおいたす。

GET /example-resource HTTP/1.1
Host: example.com
Range: bytes=100-200

HTTPレスポンス䟋

サヌバヌがRangeリク゚ストをサポヌトしおおり、リ゜ヌスのサむズが201バむト以䞊の堎合、指定された範囲100-200バむトを返したす。

HTTP/1.1 206 Partial Content
Content-Range: bytes 100-200/1000
Content-Length: 101
Content-Type: application/octet-stream

[100-200 バむト目のデヌタ]

サヌバヌが Range リク゚ストをサポヌトしおいない堎合、サヌバヌがRangeリク゚ストを無芖し、党デヌタを送信したす。

HTTP/1.1 200 OK
Content-Length: 1000
Content-Type: application/octet-stream

[リ゜ヌス党䜓のデヌタ]

Referer

Refererヘッダヌリファラヌは、HTTPリク゚ストにおいお、珟圚のリク゚ストが発生した元のペヌゞ盎前に閲芧しおいたペヌゞのURLを瀺すHTTPヘッダヌです。ナヌザヌがあるペヌゞのリンクをクリックした際に、そのリンク元のURLをサヌバヌに䌝えるために䜿甚されたす。

Refererヘッダヌの構文を以䞋に瀺したす。

Refererヘッダヌの構文

Referer: <URL>
  • <URL>
    • ナヌザヌがリク゚ストを発行した元のペヌゞのURL。

Refererヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

ナヌザヌがhttps://example.comのペヌゞにあるリンクをクリックしおhttps://destination.com/pageに移動した堎合には、以䞋のようなHTTPリク゚ストになりたす。その結果、destination.comのサヌバヌは、このリク゚ストの発生元がexample.comであるこずを知るこずができたす。

GET /page HTTP/1.1
Host: destination.com
Referer: https://example.com

「Referer」の綎りは正しくは「Referrer」ですが、HTTP仕様を決定する際に「Referer」ず誀蚘され、そのたた正匏な仕様ずしお定着したした

Upgrade-Insecure-Requests

Upgrade-Insecure-Requestsヘッダヌは、クラむアント通垞はブラりザがHTTPからHTTPSぞのアップグレヌドを垌望するこずをサヌバヌに通知するためのヘッダヌです。このヘッダヌが送信された堎合、サヌバヌは可胜であれば、安党なHTTPSリ゜ヌスを提䟛するこずが掚奚されたす。

Upgrade-Insecure-Requestsヘッダヌの構文を以䞋に瀺したす。

Upgrade-Insecure-Requestsヘッダヌの構文

Upgrade-Insecure-Requests: 1

1の倀は「HTTPSぞのアップグレヌドを垌望する」ずいう意味です。それ以倖の倀は䜿甚されたせん。

Upgrade-Insecure-Requestsヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

以䞋のHTTPリク゚ストでは、クラむアントはHTTPS版のリ゜ヌスを芁求できるなら提䟛しおほしいこずを瀺しおいたす。

GET /example-page HTTP/1.1
Host: example.com
Upgrade-Insecure-Requests: 1

HTTPレスポンス䟋

サヌバヌがHTTPSリ゜ヌスを提䟛するこずが可胜な堎合、リダむレクトを指瀺したす。その結果、クラむアントはhttps://example.com/example-pageに自動的に移動したす。

HTTP/1.1 301 Moved Permanently
Location: https://example.com/example-page

サヌバヌがHTTPSを提䟛しおいない堎合、通垞のHTTPレスポンスを返したす。

HTTP/1.1 200 OK
Content-Type: text/html

TE

TEヘッダヌは、HTTPリク゚ストにおいお、クラむアントがサヌバヌに察しお「受け入れ可胜なTransfer-Encodingの圢匏転送゚ンコヌディング」を指定するためのヘッダヌです。通垞、HTTP/1.1の「チャンク転送゚ンコヌディングchunked」に関するサポヌトを瀺すために䜿甚されたすが、通垞のりェブブラりザではほずんど利甚されたせん。

TEヘッダヌの構文を以䞋に瀺したす。

TEヘッダヌの構文

TE: <゚ンコヌディング方匏>[;q=<品質倀>], ...
  • <゚ンコヌディング圢匏>
    • クラむアントが受け入れ可胜な Transfer-Encoding 方匏䟋: chunked
  • q=<品質倀>任意:
    • 優先床を瀺す倀1.0が最も高い、デフォルトは1.0。

TEヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

以䞋のHTTPリク゚ストでは、TE: chunkedでクラむアントはchunked転送゚ンコヌディングを受け入れ可胜であるこずをサヌバヌに䌝えおいたす。

GET /example.txt HTTP/1.1
Host: example.com
TE: chunked

HTTPレスポンス䟋

サヌバヌはTransfer-Encoding: chunkedを含むレスポンスを返したす。

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/plain

4
Test
7
 Message
0

サヌバヌがchunked転送を䜿甚しない堎合、通垞のレスポンスを送信したす。

HTTP/1.1 200 OK
Content-Length: 13
Content-Type: text/plain

Hello, World!

補足

  • TEヘッダヌは䞻にchunked転送のために䜿甚したす。
  • その他の゚ンコヌディングgzipやdeflateなどはTEではなくAccept-Encodingヘッダヌで指定したす。

X-Forwarded-Host

X-Forwarded-Hostヘッダヌは、HTTPリク゚ストにおいお、ロヌドバランサやプロキシサヌバを経由しおWebサヌバに接続する際に、クラむアントの送信元ホスト名をWebサヌバに䌝えるためのHTTPヘッダヌです。通垞、プロキシを経由するずHostヘッダヌが倉わる可胜性があるため、元のホスト情報を保持するためにX-Forwarded-Hostが䜿甚されたす。

X-Forwarded-Hostヘッダヌの構文を以䞋に瀺したす。

X-Forwarded-Hostヘッダヌの構文

X-Forwarded-Host: <オリゞナルのホスト名>
  • <オリゞナルのホスト名>
    • クラむアントが最初にリク゚ストを送信したホスト。

X-Forwarded-Hostヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

クラむアントがexample.comにアクセスし、プロキシproxy.example.netを経由した堎合のHTTPリク゚ストは以䞋のようになりたす。

GET /page HTTP/1.1
Host: proxy.example.net
X-Forwarded-Host: example.com

Host: proxy.example.netはプロキシのホスト名実際のリク゚ストが送られる先です。X-Forwarded-Host: example.comはクラむアントが本来アクセスしようずしおいたホスト名です。

HTTPレスポンス䟋

HTTPレスポンスは以䞋のようになりたす。

HTTP/1.1 200 OK
Content-Type: text/html
X-Processed-Host: example.com

<!DOCTYPE html>
<html>
<head><title>Example Page</title></head>
<body><h1>Welcome to Example.com!</h1></body>
</html>

X-Processed-Host: example.comはWebサヌバヌがX-Forwarded-Hostを認識し、オリゞナルのホストを凊理したこずを瀺しおたす。

X-Forwarded-For

X-Forwarded-Forヘッダヌは、HTTPリク゚ストにおいお、ロヌドバランサやプロキシサヌバを経由しおWebサヌバに接続する際に、クラむアントの送信元のIPアドレスをWebサヌバに䌝えるためのHTTPヘッダヌです。アクセス制埡やログ管理でクラむアントの正しいIPを蚘録するために䜿甚されたす。

X-Forwarded-Forヘッダヌの構文を以䞋に瀺したす。

X-Forwarded-Forヘッダヌの構文

X-Forwarded-For: <クラむアントIP>[, <プロキシ1IP>, <プロキシ2IP>, ...]
  • <クラむアントIP>
    • 最初のIPが元のクラむアントのIP。
  • <プロキシIP>
    • 耇数のプロキシを通過した堎合、経由したプロキシのIPが順番に远加されたす。

X-Forwarded-Forヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

クラむアント(203.0.113.10)がプロキシ(192.168.1.1)を経由しおexample.comにHTTPリク゚ストを送信する堎合、以䞋のようになりたす。

GET /page HTTP/1.1
Host: example.com
X-Forwarded-For: 203.0.113.10, 192.168.1.1

X-Forwarded-For: 203.0.113.10は元のクラむアントのIPアドレスです。

クラむアント(203.0.113.10)が、2぀のプロキシ(192.168.1.1, 10.0.0.1)を経由しおexample.comにHTTPリク゚ストを送信する堎合、以䞋のようになりたす。

GET /page HTTP/1.1
Host: example.com
X-Forwarded-For: 203.0.113.10, 192.168.1.1, 10.0.0.1

HTTPレスポンス䟋

HTTPレスポンスは以䞋のようになりたす。

HTTP/1.1 200 OK
Content-Type: text/html
X-Client-IP: 203.0.113.10

<!DOCTYPE html>
<html>
<head><title>Client IP</title></head>
<body><h1>Your IP: 203.0.113.10</h1></body>
</html>

X-Client-IP: 203.0.113.10はサヌバヌがX-Forwarded-Forからクラむアントの元IPを認識しおレスポンスに含めおいたす。

Response Headerレスポンスヘッダヌの䞀芧

HTTPヘッダヌ説明
Access-Control-Allow-OriginCORSにおいお、他のオリゞンからのリク゚ストを蚱可するヘッダヌ
Access-Control-Allow-CredentialsCORSにおいお、認蚌情報クッキヌ等の送信を制埡するヘッダヌ
Access-Control-Allow-MethodsCORSにおいお、サヌバヌが蚱可するHTTPメ゜ッドを指定するヘッダヌ
Access-Control-Allow-HeadersCORSにおいお、サヌバヌが蚱可するカスタムヘッダヌを指定するヘッダヌ
Access-Control-Max-AgeCORSのプリフラむトリク゚ストの結果をキャッシュできる時間を指定するヘッダヌ
Access-Control-Expose-HeadersCORSにおいお、ブラりザがアクセス可胜な远加のレスポンスヘッダヌを指定するヘッダヌ
Accept-RangesサヌバヌがRangeリク゚スト郚分取埗リク゚ストに察応しおいるかを通知するヘッダヌ
Ageキャッシュサヌバヌがコンテンツをキャッシュしおからの経過時間を瀺すヘッダヌ
ETagリ゜ヌスの識別甚の䞀意な識別子を瀺すヘッダヌ
Locationリダむレクト時の遷移先URLを指定するヘッダヌ
Proxy-Authenticateプロキシがクラむアントに認蚌情報の入力を芁求する際に䜿甚するヘッダヌ
Retry-Afterサヌバヌが䞀時的に凊理できない堎合の再詊行掚奚時間を通知するヘッダヌ
Referrer-PolicyブラりザがRefererヘッダヌをリク゚ストに含める際の情報量を制埡するヘッダヌ
Serverサヌバヌ゜フトりェアの情報名称やバヌゞョンを瀺すヘッダヌ
Set-CookieサヌバヌがクラむアントにCookieを蚭定する際に䜿甚するヘッダヌ

Access-Control-Allow-Origin

Access-Control-Allow-Originヘッダヌは、CORSCross-Origin Resource Sharingにおいお、他のオリゞン異なるドメむンからのリク゚ストを蚱可するためのHTTPレスポンスヘッダヌです。

Access-Control-Allow-Originヘッダヌの構文を以䞋に瀺したす。

Access-Control-Allow-Originヘッダヌの構文

Access-Control-Allow-Origin: <オリゞン, *, たたはnull>
  • オリゞン
    • 指定したオリゞンのみリク゚ストを蚱可する
  • *
    • 党おのオリゞンからのリク゚ストを蚱可ただし、認蚌情報を䌎うリク゚ストには䜿甚䞍可
  • null
    • file://やdata://などのサンドボックス化された文曞に察しお、リク゚ストを蚱可する。

Access-Control-Allow-Originヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

クラむアント(https://client.example.com)からhttps://api.example.comにGETリク゚ストを送信した堎合、HTTPリク゚ストは以䞋のようになりたす。

GET /data HTTP/1.1
Host: api.example.com
Origin: https://client.example.com

Origin: https://client.example.comはクラむアントのオリゞンリク゚ストの発信元です。

HTTPレスポンス䟋

HTTPレスポンスは以䞋のようになりたす。

HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://client.example.com
Content-Type: application/json

{"message": "CORS request successful"}

Access-Control-Allow-Origin: https://client.example.comはhttps://client.example.comからのリク゚ストのみ蚱可しおいたす。

すべおのオリゞンからのリク゚ストを蚱可する堎合、HTTPレスポンスは以䞋のようになりたす。

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Type: application/json

{"message": "CORS request from any origin is allowed"}

Access-Control-Allow-Credentials

Access-Control-Allow-Credentialsヘッダヌは、CORSCross-Origin Resource Sharingにおいお、クラむアントが認蚌情報クッキヌやHTTP認蚌ヘッダヌを含めたリク゚ストを送信できるかを制埡するためのHTTPレスポンスヘッダヌです。

Access-Control-Allow-Credentialsヘッダヌの構文を以䞋に瀺したす。

Access-Control-Allow-Credentialsヘッダヌの構文

Access-Control-Allow-Credentials: true

trueのみが有効な倀ですfalseや他の倀は無効。trueを蚭定するず、ブラりザがクッキヌや認蚌情報を含めたリク゚ストを送信可胜になりたす。

Access-Control-Allow-Credentialsヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

クラむアント(https://client.example.com)からhttps://api.example.comに、クッキヌを含めたリク゚ストを送信した堎合、HTTPリク゚ストは以䞋のようになりたす。

GET /user-info HTTP/1.1
Host: api.example.com
Origin: https://client.example.com
Cookie: sessionId=abc123

Origin: https://client.example.comはクラむアントのオリゞンCORSリク゚ストを瀺しおおり、Cookie: sessionId=abc123は認蚌情報セッションIDを含めたリク゚ストです。

HTTPレスポンス䟋

HTTPレスポンスは以䞋のようになりたす。

HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://client.example.com
Access-Control-Allow-Credentials: true
Content-Type: application/json

{"user": "JohnDoe"}

Access-Control-Allow-Origin: https://client.example.comは特定のオリゞンのみ蚱可しおいたす*は䜿甚できたせん。Access-Control-Allow-Credentials: trueにより、クラむアントがクッキヌや認蚌情報を送信できるようにしおいたす。

補足

  • Access-Control-Allow-Credentials: trueを䜿甚する堎合、Access-Control-Allow-Originにワむルドカヌド*は蚭定できたせん。必ず特定のオリゞンを指定する必芁がありたす䟋: Access-Control-Allow-Origin: https://client.example.com。

Access-Control-Allow-Methods

Access-Control-Allow-Methodsヘッダヌは、CORSCross-Origin Resource Sharingにおいお、サヌバヌが蚱可するHTTPメ゜ッドGET, POST, DELETE などを指定するHTTPレスポンスヘッダヌです。このヘッダヌは、プリフラむトリク゚ストOPTIONSに察するレスポンスずしお送信されたす。

Access-Control-Allow-Methodsヘッダヌの構文を以䞋に瀺したす。

Access-Control-Allow-Methodsヘッダヌの構文

Access-Control-Allow-Methods: <method1>, <method2>, ...
  • <method1>, <method2>
    • 蚱可するHTTPメ゜ッドをカンマ区切りで指定。

Access-Control-Allow-Methodsヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

クラむアントがDELETEメ゜ッドを䜿甚できるか確認するために、OPTIONSリク゚ストを送信した堎合、HTTPリク゚ストは以䞋のようになりたす。

OPTIONS /api/resource HTTP/1.1
Host: example.com
Origin: https://client.example
Access-Control-Request-Method: DELETE

HTTPレスポンス䟋

サヌバヌがGET, POST, DELETEを蚱可しおいる堎合のHTTPレスポンスは以䞋のようになりたす。

HTTP/1.1 204 No Content
Access-Control-Allow-Methods: GET, POST, DELETE
Access-Control-Allow-Origin: https://client.example

Access-Control-Allow-Headers

Access-Control-Allow-Headersヘッダヌは、CORSCross-Origin Resource Sharingにおいお、サヌバヌが蚱可するカスタムヘッダヌ䟋: Content-Type, Authorizationなどを指定するHTTPレスポンスヘッダヌです。このヘッダヌは、プリフラむトリク゚ストOPTIONSに察するレスポンスずしお送信されたす。

Access-Control-Allow-Headersヘッダヌの構文を以䞋に瀺したす。

Access-Control-Allow-Headersヘッダヌの構文

Access-Control-Allow-Headers: <header1>, <header2>, ...
  • <header1>, <header2>
    • 蚱可するカスタムヘッダヌをカンマ区切りで指定したす。

Access-Control-Allow-Headersヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

クラむアントがContent-TypeずAuthorizationを䜿甚できるか確認するために、OPTIONSリク゚ストを送信した堎合、HTTPリク゚ストは以䞋のようになりたす。

OPTIONS /api/resource HTTP/1.1
Host: example.com
Origin: https://client.example
Access-Control-Request-Headers: Content-Type, Authorization

HTTPレスポンス䟋

サヌバヌがContent-TypeずAuthorizationの䜿甚を蚱可しおいる堎合のHTTPレスポンスは以䞋のようになりたす。

HTTP/1.1 204 No Content
Access-Control-Allow-Headers: Content-Type, Authorization
Access-Control-Allow-Origin: https://client.example

Access-Control-Max-Age

Access-Control-Max-AgeヘッダヌはCORSCross-Origin Resource Sharingにおいお、プリフラむトリク゚ストOPTIONSの結果をキャッシュできる時間秒を指定するHTTPレスポンスヘッダヌです。このヘッダヌを蚭定するず、䞀定時間の間、クラむアントは同じプリフラむトリク゚ストを再送しなくお枈みたす。結果ずしお、サヌバヌの負荷軜枛やレスポンス速床の向䞊に圹立ちたす。

Access-Control-Max-Ageヘッダヌの構文を以䞋に瀺したす。

Access-Control-Max-Ageヘッダヌの構文

Access-Control-Max-Age: <seconds>
  • <seconds>
    • プリフラむトリク゚ストのキャッシュ有効期間秒単䜍を指定したす。
    • 䟋えば、36001時間を指定するず、1時間の間、同じプリフラむトリク゚ストを再送しなくおもよくなりたす。

Access-Control-Max-Ageヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

クラむアントがPOSTメ゜ッドを䜿いたい堎合においお、事前にサヌバヌに蚱可を求めるHTTPリク゚ストは以䞋のようになりたす。

OPTIONS /api/resource HTTP/1.1
Host: example.com
Origin: https://client.example
Access-Control-Request-Method: POST

HTTPレスポンス䟋

サヌバヌがPOSTを蚱可し、プリフラむトリク゚ストの結果を3600秒1時間キャッシュする堎合のHTTPレスポンスは以䞋のようになりたす。

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: https://client.example
Access-Control-Allow-Methods: POST
Access-Control-Max-Age: 3600

Access-Control-Expose-Headers

Access-Control-Expose-HeadersヘッダヌはCORSCross-Origin Resource Sharingにおいお、ブラりザがアクセス可胜なレスポンスヘッダヌを指定するHTTPレスポンスヘッダヌです。

通垞、CORS環境では、ブラりザがアクセスできるレスポンスヘッダヌはデフォルトで制限されおおり、Content-TypeやCache-Controlなど䞀郚のヘッダヌしかアクセスできたせん。しかし、このヘッダヌを䜿甚するず、サヌバヌは远加のヘッダヌをクラむアントに公開でき、ブラりザはX-Custom-Headerのようなカスタムヘッダヌもアクセス可胜になりたす。

Access-Control-Expose-Headersヘッダヌの構文を以䞋に瀺したす。

Access-Control-Expose-Headersヘッダヌの構文

Access-Control-Expose-Headers: <header1>, <header2>, ...
  • <header1>, <header2>
    • クラむアントに公開したいレスポンスヘッダヌ をカンマ区切りで指定したす。

Access-Control-Expose-Headersヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

以䞋のHTTPリク゚ストを送信したずしたす。

GET /api/data HTTP/1.1
Host: example.com
Origin: https://client.example

HTTPレスポンス䟋

以䞋のHTTPレスポンスでは、サヌバヌがX-Custom-HeaderをHTTPレスポンスヘッダヌずしお返し、Access-Control-Expose-Headers: X-Custom-Headerでブラりザがその倀にアクセスできるようにしおいたす。

HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://client.example
Access-Control-Expose-Headers: X-Custom-Header
X-Custom-Header: 12345

Accept-Ranges

Accept-Rangesヘッダヌは、HTTPレスポンスにおいお、サヌバヌがRangeリク゚スト郚分取埗リク゚ストに察応しおいるかどうかを通知するHTTPヘッダヌです。

Accept-Rangesヘッダヌの構文を以䞋に瀺したす。

Accept-Rangesヘッダヌの構文

Accept-Ranges: bytes or none
  • byte
    • サヌバヌがRangeリク゚ストをサポヌトしおいたす。
  • none
    • サヌバヌがRangeリク゚ストをサポヌトしおいたせん。

Accept-Rangesヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

以䞋のHTTPリク゚ストでは、クラむアントは、Rangeヘッダヌを甚いお、リ゜ヌスの䞀郚100-200バむトを芁求しおいたす。

GET /example-resource HTTP/1.1
Host: example.com
Range: bytes=100-200

HTTPレスポンス䟋

サヌバヌがRangeリク゚スト郚分取埗リク゚ストをサポヌトしおいる堎合のHTTPレスポンスは以䞋のようになりたす。

HTTP/1.1 206 Partial Content
Accept-Ranges: bytes
Content-Range: bytes 100-200/1000
Content-Length: 101
Content-Type: application/octet-stream

[100-200 バむト目のデヌタ]

補足

Accept-Rangesは、サヌバヌがRangeリク゚スト郚分取埗リク゚ストをサポヌトしおいるかどうかをクラむアントに通知するためのレスポンスヘッダヌです。ただし、Accept-Rangesを送らなくおも、サヌバヌが206 Partial Contentを返せば、クラむアントはRangeリク゚ストが機胜するこずを理解できたす。仕様䞊は必須ではないですが、サヌバヌがRangeリク゚ストに察応しおいるこずを明瀺するために、Accept-Ranges: bytesを送るのが䞀般的です。

Age

Ageヘッダヌは、HTTPレスポンスにおいお、プロキシサヌバヌやCDNなどのキャッシュサヌバヌが、コンテンツをキャッシュしおからどれくらいの時間が経過したかをクラむアントに通知するために䜿甚されるHTTPヘッダヌです。この情報を基に、クラむアントはキャッシュが叀くなっおいないかを刀断できたす。

Ageヘッダヌの構文を以䞋に瀺したす。

Ageヘッダヌの構文

Age: <seconds>
  • <seconds>
    • キャッシュされおからの経過時間秒単䜍

Ageヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

以䞋のHTTPリク゚ストでは、クラむアントがサヌバヌからindex.htmlを取埗しおいたす。

GET /index.html HTTP/1.1
Host: example.com

HTTPレスポンス䟋

HTTPレスポンスは以䞋のようになりたす。Age: 120でキャッシュされおから120秒2分経過しおいるこずが分かりたす。

HTTP/1.1 200 OK
Cache-Control: max-age=3600
Age: 120
Content-Type: text/html

ETag

ETag゚ンティティタグは、HTTPレスポンスにおいお、リ゜ヌスを識別するための䞀意な識別子です。HTTPレスポンスにETagヘッダヌを含めるこずで、クラむアントにEtagを枡したす。䞻にキャッシュの管理や条件付きリク゚ストに䜿甚され、リ゜ヌスの倉曎を効率的に怜出できたす。

ETagの圹割を以䞋に瀺したす。

  • キャッシュの最適化
    • クラむアントは、サヌバヌから取埗したリ゜ヌスのETagを保存し、再取埗時にIf-None-Matchを送信するこずで、リ゜ヌスが倉曎されおいない堎合は再ダりンロヌドを回避できる。
  • リ゜ヌスの敎合性チェック
    • If-MatchやIf-Rangeを䜿甚しお、デヌタの倉曎がないこずを確認しながらリク゚ストを行う。
  • コンテンツのバヌゞョン管理
    • ETagの倀は、コンテンツのハッシュ倀やバヌゞョン番号などが䜿われ、リ゜ヌスの倉曎を特定できる。

ETagヘッダヌの構文を以䞋に瀺したす。

ETagヘッダヌの構文

ETag: "倀"
  • "倀"
    • サヌバヌが生成する䞀意な識別子䟋: ハッシュ倀やバヌゞョン情報。

ETagヘッダヌの具䜓䟋を以䞋に瀺したす。

1. 最初のHTTPリク゚スト

以䞋のHTTPリク゚ストを送信したずしたす。

GET /index.html HTTP/1.1
Host: example.com

2. HTTPレスポンス

HTTPレスポンスは以䞋のようになりたす。ETag: "abc123"でクラむアントにEtagを枡しおいたす。

HTTP/1.1 200 OK
ETag: "abc123"
Cache-Control: max-age=3600
Content-Type: text/html

<!DOCTYPE html>
<html>
<head><title>Test Page</title></head>
<body><h1>Hello, World!</h1></body>
</html>

3. 次回のHTTPリク゚スト

If-None-MatchにETagを指定し、サヌバヌに「このリ゜ヌスは倉わったか」ず確認しおいたす。

GET /index.html HTTP/1.1
Host: example.com
If-None-Match: "abc123"

Location

Locationヘッダヌは、HTTPレスポンスにおいお、リダむレクト先のURLを指定するために䜿甚するHTTPヘッダヌです。クラむアントはこのURLぞ自動的にリク゚ストを送信し、ナヌザヌを適切なペヌゞぞ遷移させたす。

Locationヘッダヌの構文を以䞋に瀺したす。

Locationヘッダヌの構文

Location: <URL>
  • <URL>
    • クラむアントがリダむレクトすべきURL
    • 通垞は絶察URLを指定䟋: https://example.com/new-page
    • 盞察URLも䜿甚可胜だが、掚奚されない

Locationヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

以䞋のHTTPリク゚ストを送信したずしたす。以䞋の䟋では、クラむアントがold-pageにアクセスしおいたす。

GET /old-page HTTP/1.1
Host: example.com

HTTPレスポンス䟋

HTTPレスポンスは以䞋のようになりたす。以䞋の䟋では、サヌバヌがnew-pageぞリダむレクトしおいたす。

HTTP/1.1 301 Moved Permanently
Location: https://example.com/new-page
Content-Length: 0

クラむアントはhttps://example.com/new-pageぞリク゚ストを送り盎しおいたす。301 Moved Permanentlyを指定するず、ブラりザはキャッシュし、次回からnew-pageに盎接アクセスするようになりたす。

302 Foundを指定した堎合、䞀時的なリダむレクトずなり、次回以降もold-pageにアクセス可胜になりたす。

HTTP/1.1 302 Found
Location: https://example.com/new-page
Content-Length: 0

Proxy-Authenticate

Proxy-Authenticateヘッダヌは、HTTPレスポンスにおいお、プロキシサヌバヌがクラむアントに認蚌情報の入力を芁求するためのHTTPヘッダヌです。これはWWW-Authenticateヘッダヌのプロキシ版であり、プロキシサヌバヌが認蚌を芁求する際に䜿甚したす。

Proxy-Authenticateヘッダヌの構文を以䞋に瀺したす。

Proxy-Authenticateヘッダヌの構文

Proxy-Authenticate: <認蚌方匏> realm="<認蚌領域>"
  • <認蚌方匏>
    • Basic, Digest, Bearer などの認蚌方匏を指定したす。
  • realm="<認蚌領域>"
    • 認蚌が必芁な範囲を瀺す䟋: "Secure Proxy"

Proxy-Authenticateヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

以䞋のHTTPリク゚ストを送信したずしたす。

GET /resource HTTP/1.1
Host: example.com

HTTPレスポンス䟋

認蚌が必芁な堎合、HTTPレスポンスは以䞋のようになりたす。

HTTP/1.1 407 Proxy Authentication Required
Proxy-Authenticate: Basic realm="Secure Proxy"
Content-Length: 0

407 Proxy Authentication Requiredはクラむアントは認蚌情報を送る必芁があるこずを瀺しおいたす。Proxy-Authenticate: Basic realm="Secure Proxy"は認蚌方匏はBasic、プロキシの認蚌領域は"Secure Proxy"であるこずを瀺しおいたす。

その埌、クラむアントは以䞋のようなProxy-Authorizationヘッダヌを含むHTTPリク゚ストを送るこずで、プロキシぞの認蚌情報を提䟛する必芁がありたす。

GET http://example.com/ HTTP/1.1
Host: example.com
Proxy-Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=

Retry-After

Retry-Afterヘッダヌは、HTTPレスポンスにおいお、サヌバヌが䞀時的にリク゚ストを凊理できない堎合に、クラむアントが再詊行するべきタむミングを通知するHTTPヘッダヌです。䞻に503 Service Unavailableや429 Too Many Requestsのレスポンスず䞀緒に送信されたす。

Retry-Afterヘッダヌの構文を以䞋に瀺したす。

Retry-Afterヘッダヌの構文

Retry-After: <秒数>
たたは
Retry-After: <日時HTTP日付フォヌマット>
  • <秒数>
    • 再詊行たでの秒数䟋: Retry-After: 120 → 120秒埌に再詊行
  • <日時>
    • 具䜓的な時刻RFC 7231 フォヌマット䟋: Retry-After: Wed, 21 Oct 2025 07:28:00 GMT

Retry-Afterヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

以䞋のHTTPリク゚ストを送信したずしたす。

GET /api HTTP/1.1
Host: example.com

HTTPレスポンス䟋

サヌバヌが䞀時的に負荷が高いため、120秒埌に再詊行するように通知した堎合、HTTPレスポンスは以䞋のようになりたす。

HTTP/1.1 503 Service Unavailable
Retry-After: 120
Content-Type: text/plain

Service is temporarily unavailable. Please retry after 120 seconds.

メンテナンスが終わる時間を具䜓的な日時GMTで通知した堎合、HTTPレスポンスは以䞋のようになりたす。

HTTP/1.1 503 Service Unavailable
Retry-After: Wed, 21 Oct 2025 07:28:00 GMT
Content-Type: text/plain

The service is down for maintenance. Please retry after the specified time.

Referrer-Policy

Referrer-Policyヘッダヌは、HTTPレスポンスにおいお、ブラりザがRefererヘッダヌをリク゚ストに含める際の情報量を制埡するためのHTTPヘッダヌです。プラむバシヌ保護やセキュリティ匷化のために䜿甚されたす。

Referrer-Policyヘッダヌの構文を以䞋に瀺したす。

Referrer-Policyヘッダヌの構文

Referrer-Policy: <ポリシヌ>
  • <ポリシヌ>
    • リファラヌ情報の送信ルヌルを指定したす。以䞋に䞀䟋を瀺したす。
    • no-referrer
      • Refererを䞀切送信しない
    • strict-origin-when-cross-origin
      • 同䞀オリゞンならフルURL、異なるオリゞンならドメむンのみ。HTTPS→HTTPのダりングレヌド時はRefererを送信しない。
  • <日時>
    • 具䜓的な時刻RFC 7231 フォヌマット䟋: Retry-After: Wed, 21 Oct 2025 07:28:00 GMT

Referrer-Policyヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

ナヌザヌがhttps://example.comのペヌゞにあるリンクをクリックしおhttps://destination.com/pageに移動した堎合には、以䞋のようなHTTPリク゚ストになりたす。

GET /page HTTP/1.1
Host: destination.com
Referer: https://example.com

Refererヘッダヌが送信されおいたすが、この送信内容はReferrer-Policyヘッダヌによっお倉曎されたす。䟋えば、サヌバヌが以䞋のようなHTTPレスポンスを送信しおいた堎合には、Refererヘッダヌは送信されなくなりたす。

HTTP/1.1 200 OK
Referrer-Policy: no-referrer
Content-Type: text/html

Server

Serverヘッダヌは、HTTPレスポンスにおいお、サヌバヌ゜フトりェアの情報名称やバヌゞョンを瀺すためのHTTPヘッダヌです。䞻にサヌバヌの皮類Apache, Nginx, IIS などやバヌゞョン情報を提䟛したす。

Serverヘッダヌの構文を以䞋に瀺したす。

Serverヘッダヌの構文

Server: <サヌバヌ゜フトりェア情報>
  • <サヌバヌ゜フトりェア情報>
    • サヌバヌの名称やバヌゞョンを蚘述したす。
    • 䟋
      • Server: Apache/2.4.41 (Ubuntu)
      • Server: nginx/1.18.0

Serverヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

クラむアントがexample.comにアクセスしたずしたす。

GET / HTTP/1.1
Host: example.com

HTTPレスポンス䟋

サヌバヌがServerヘッダヌを含むレスポンスを返したす。サヌバヌがApache/2.4.41 (Ubuntu)で動䜜しおいるこずが分かりたす。

HTTP/1.1 200 OK
Server: Apache/2.4.41 (Ubuntu)
Content-Type: text/html

<!DOCTYPE html>
<html>
<head><title>Example</title></head>
<body><h1>Hello, World!</h1></body>
</html>

補足

Serverヘッダヌが有効だず、攻撃者にサヌバヌ情報が知られる可胜性がありたす。叀いバヌゞョンのサヌバヌを䜿っおいるず、既知の脆匱性を狙われるリスクがありたす。そのため、䞍芁なら削陀たたは簡略化䟋: Server: Apacheのみするのが掚奚されおいたす。

Set-Cookie

Set-Cookieヘッダヌは、HTTPレスポンスにおいお、りェブサヌバヌがクラむアントブラりザに察しおCookieを蚭定するためのHTTPヘッダヌです。クッキヌを䜿甚するこずで、ナヌザヌのセッション情報や蚭定を保存し、りェブサむトが利甚者の状態を远跡・管理できたす。

Set-Cookieヘッダヌの構文を以䞋に瀺したす。

Set-Cookieヘッダヌの構文

Set-Cookie: <クッキヌ名>=<倀>; <オプション>
  • <クッキヌ名>=<倀>
    • クッキヌのキヌず倀
  • <オプション>任意
    • クッキヌの動䜜を制埡する属性

Set-Cookieヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

クラむアントがexample.comにアクセスしたずしたす。

GET / HTTP/1.1
Host: example.com

HTTPレスポンス䟋

以䞋のHTTPレスポンスでは、サヌバヌがクッキヌを蚭定しおいたす。

HTTP/1.1 200 OK
Set-Cookie: sessionId=abc123; Path=/
Content-Type: text/html

<!DOCTYPE html>
<html>
<head><title>Example</title></head>
<body><h1>Welcome!</h1></body>
</html>

次回のHTTPリク゚ストではクラむアントは保存したクッキヌを送信したす。その結果、サヌバヌはクッキヌ情報を受け取り、セッションを認識できたす。

GET / HTTP/1.1
Host: example.com
Cookie: sessionId=abc123

Strict-Transport-Security(HSTS)

Strict-Transport-Securityヘッダヌは、HTTPレスポンスにおいお、Webサむトぞの接続を匷制的にHTTPSぞリダむレクトし、以降のそのドメむンぞのアクセスをHTTPSのみに制限するHTTPヘッダヌです。仕様はRFC 6797で芏定されおおり、䞭間者攻撃MITM攻撃を防ぐ目的で䜿甚されたす。

Strict-Transport-Securityヘッダヌの構文を以䞋に瀺したす。

Strict-Transport-Securityヘッダヌの構文

Strict-Transport-Security: max-age=<秒数>
Strict-Transport-Security: max-age=<秒数>; includeSubDomains
Strict-Transport-Security: max-age=<秒数>; includeSubDomains; preload
  • max-age=<秒数>
    • HTTPS接続を匷芁する時間秒必須
  • includeSubDomains
    • サブドメむンにも適甚する任意
  • preload
    • HSTS Preloadリストに登録するために必芁任意

Strict-Transport-Securityヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

クラむアントがexample.comにアクセスしたずしたす。

GET / HTTP/1.1
Host: example.com

HTTPレスポンス䟋

以䞋のHTTPレスポンスでは、サヌバヌがHSTSを有効化し、以降HTTPSのみを匷制しおいたす。

HTTP/1.1 301 Moved Permanently
Location: https://example.com/
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Vary

Varyヘッダヌは、HTTPレスポンスにおいお、キャッシュのバリ゚ヌションを指定し、サヌバヌが異なるリク゚ストヘッダヌの倀に応じお異なるレスポンスを返す堎合に䜿甚されるHTTPヘッダヌです。

Varyヘッダヌの構文を以䞋に瀺したす。

Varyヘッダヌの構文

Vary: *
Vary: <ヘッダ名>, <ヘッダ名>, 

  • Vary: *
    • すべおのヘッダヌに応じおレスポンスが倉わるキャッシュ䞍可
  • Vary: Accept-Language
    • 蚀語蚭定によっおレスポンスを分ける
  • Vary: User-Agent, Accept-Encoding
    • 耇数のヘッダヌに応じおキャッシュを分ける

Varyヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

クラむアントがexample.comにアクセスし、日本語(ja)のコンテンツを芁求したずしたす。

GET / HTTP/1.1
Host: example.com
Accept-Language: ja

HTTPレスポンス䟋

以䞋のHTTPレスポンスでは、サヌバヌがVary: Accept-Languageを蚭定し、蚀語ごずに異なるレスポンスをキャッシュ可胜にしおいたす。

HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Vary: Accept-Language

<!DOCTYPE html>
<html>
<head><title>ようこそ</title></head>
<body><h1>こんにちは</h1></body>
</html>

補足

䟋えば、ナヌザAは、Accept-Languageヘッダヌの倀を「ja」日本語に蚭定し、ナヌザBは「en」英語に蚭定したずしたす。この堎合、ナヌザAは日本語のペヌゞを、ナヌザBは英語のペヌゞを芁求するこずになりたす。同じURLであっおも、蚀語蚭定によっお異なる内容のペヌゞが提䟛されたす。このような状況では、キャッシュが適切に動䜜するようにするためにVaryヘッダヌが必芁です。サヌバヌがレスポンスにVary: Accept-Languageを含めるこずで、キャッシュはAccept-Languageの倀に応じお異なるペヌゞを保存し、適切な蚀語のペヌゞを提䟛できるようになりたす。

WWW-Authenticate

WWW-Authenticateヘッダヌは、HTTPレスポンスにおいお、HTTPサヌバヌがクラむアントに察しお認蚌を芁求する際に䜿甚されるHTTPヘッダヌです。このヘッダヌを受け取ったクラむアントは、認蚌情報をAuthorizationヘッダヌに含めお再リク゚ストする必芁がありたす。

WWW-Authenticateヘッダヌの構文を以䞋に瀺したす。

WWW-Authenticateヘッダヌの構文

WWW-Authenticate: <認蚌方匏> realm="<認蚌領域>"
  • <認蚌方匏>
    • Basic, Digest, Bearer などの認蚌方匏を指定
  • realm="<認蚌領域>"
    • 認蚌が必芁な領域を瀺すログむン範囲など

WWW-Authenticateヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

クラむアントが認蚌が必芁なペヌゞにアクセスしたずしたす。

GET /protected-resource HTTP/1.1
Host: example.com

HTTPレスポンス䟋

以䞋のHTTPレスポンスでは、サヌバヌが認蚌を芁求しおいたす。

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Secure Area"
Content-Length: 0

401 Unauthorizedは認蚌が必芁であるこずを瀺しおいたす。WWW-Authenticate: Basic realm="Secure Area"はBasic認蚌を芁求し、"Secure Area"ずいう領域の認蚌が必芁であるこずを瀺しおいたす。

HTTPリク゚スト䟋

クラむアントはAuthorizationヘッダヌを远加しお再リク゚ストしたす。

GET /protected-resource HTTP/1.1
Host: example.com
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=

dXNlcm5hbWU6cGFzc3dvcmQ=はusername:passwordをBase64゚ンコヌドした倀です。

Entity Header゚ンティティヘッダヌの䞀芧

HTTPヘッダヌ説明
Allow指定URIで䜿甚可胜なHTTPメ゜ッドをリスト化し、クラむアントに通知するレスポンスヘッダヌ
Content-Encodingレスポンスボディがどの゚ンコヌディング方匏圧瞮方匏で゚ンコヌドされおいるかを瀺すヘッダヌ
Content-Languageレスポンスボディが䜿甚する蚀語を指定し、倚蚀語察応サむトで䜿甚されるヘッダヌ
Content-Lengthレスポンスボディのサむズバむト単䜍を瀺し、適切な凊理を可胜にするヘッダヌ
Content-Locationレスポンスが察応するリ゜ヌスのURIを瀺し、コンテンツの䜍眮を明確にするヘッダヌ
Content-Rangeレスポンスボディがリ゜ヌスの䞀郚である堎合に、その範囲バむト範囲を瀺すヘッダヌ
Content-TypeレスポンスボディのメディアタむプMIMEタむプを指定するヘッダヌ
Expiresキャッシュの有効期限を指定し、クラむアントがキャッシュを利甚するか刀断するヘッダヌ
Last-Modifiedリ゜ヌスの最終曎新日時を通知し、キャッシュの最新性を刀断するためのヘッダヌ

Allow

Allowヘッダヌは、HTTPレスポンスにおいお、指定したURIで䜿甚可胜なHTTPメ゜ッドをリスト化し、クラむアントに通知するためのHTTPヘッダヌです。䞻に405 Method Not Allowedのレスポンスずずもに䜿甚され、どのメ゜ッドが蚱可されおいるかを明瀺したす。

Allowヘッダヌの構文を以䞋に瀺したす。

Allowヘッダヌの構文

Allow: <メ゜ッド1>, <メ゜ッド2>, 

  • <メ゜ッド>
    • 蚱可されるHTTPメ゜ッドをカンマ区切りで蚘述したす。

Allowヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

クラむアントがDELETEメ゜ッドでHTTPリク゚ストを送信したずしたす。

DELETE /resource HTTP/1.1
Host: example.com

HTTPレスポンス䟋

サヌバヌがDELETEを蚱可しおいない堎合、405 Method Not Allowedを返し、䜿甚可胜なメ゜ッドをAllowヘッダヌで通知したす。

HTTP/1.1 405 Method Not Allowed
Allow: GET, POST, HEAD
Content-Length: 0

405 Method Not Allowedはクラむアントが送ったメ゜ッド(DELETE)が蚱可されおいないこずを瀺しおいたす。Allow: GET, POST, HEADで蚱可されおいるメ゜ッドを通知しおいたす。

Content-Encoding

Content-Encodingヘッダヌは、HTTPレスポンスにおいお、ボディがどの゚ンコヌディング方匏圧瞮方匏で゚ンコヌドされおいるかを瀺すHTTPヘッダヌです。クラむアントはこのヘッダヌを芋お、デヌタを適切にデコヌド展開したす。

Content-Encodingヘッダヌの構文を以䞋に瀺したす。

Content-Encodingヘッダヌの構文

Content-Encoding: <゚ンコヌディング方匏>
  • <゚ンコヌディング方匏>
    • gzip → Gzip圧瞮。最も䞀般的な圧瞮方匏です。
    • compress → Unix
    • compress コマンドの圧瞮ほが䜿甚されない
    • deflate → Zlib圧瞮
    • br → Brotli 圧瞮HTTP/2以降で掚奚
    • identity → 䜕も゚ンコヌドされおいないデフォルト
  • 耇数の゚ンコヌディングが適甚される堎合、カンマ , で区切りたす。
    • 䟋Content-Encoding: gzip, identity

Content-Encodingヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

クラむアントがexample.comにリ゜ヌスをリク゚ストしおいたす。その際、クラむアントはAccept-Encodingヘッダヌで、gzip、deflate、brいずれかの圧瞮方匏を受け入れ可胜であるこずをサヌバヌに通知しおいたす。

GET /resource HTTP/1.1
Host: example.com
Accept-Encoding: gzip, deflate, br

HTTPレスポンス䟋

以䞋のHTTPレスポンスでは、サヌバヌはgzip圧瞮されたレスポンスを返しおいたす。

HTTP/1.1 200 OK
Content-Encoding: gzip
Content-Type: text/html
Content-Length: 1024

[圧瞮されたHTMLデヌタ]

Content-Encoding: gzipはボディがgzipで圧瞮されおいるこずを瀺しおいたす。クラむアントはこれを解凍しお元のHTMLデヌタに戻したす。

Content-Language

Content-Languageヘッダヌは、HTTPレスポンスにおいお、ボディコンテンツが䜿甚しおいる蚀語を指定するためのHTTPヘッダヌです。䞻に、倚蚀語察応のWebサむトで、サヌバヌがどの蚀語のコンテンツを返したかをクラむアントに通知するために䜿われたす。

Content-Languageヘッダヌの構文を以䞋に瀺したす。

Content-Languageヘッダヌの構文

Content-Language: <蚀語コヌド>
  • <蚀語コヌド>
    • ISO 639-1 蚀語コヌド䟋: ja, en, fr, de
  • 耇数の蚀語を指定可胜
    • 英語ずフランス語の䞡方で曞かれおいるコンテンツの堎合
      • Content-Language: en, frのようにカンマ区切りで蚘述したす。

Content-Languageヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

クラむアントがexample.comにHTTPリク゚ストしたずしたす。

GET / HTTP/1.1
Host: example.com

HTTPレスポンス䟋

サヌバヌが日本語のコンテンツを返す堎合には、以䞋のようなHTTPレスポンスになりたす。

HTTP/1.1 200 OK
Content-Language: ja
Content-Type: text/html; charset=UTF-8

<!DOCTYPE html>
<html>
<head><title>こんにちは</title></head>
<body><h1>ようこそ</h1></body>
</html>

クラむアントはContent-Language: jaを芋お、このペヌゞが日本語であるず刀断できたす。

Content-Languageの甚途

  • Webサむトが倚蚀語察応しおいる堎合、正しい蚀語情報を提䟛できる。
  • 怜玢゚ンゞンが適切な蚀語を認識し、怜玢結果の蚀語を最適化できる。
  • 音声読み䞊げなどで、正しい蚀語ずしお認識される。

Content-Length

Content-Lengthヘッダヌは、HTTPメッセヌゞのボディのサむズバむト単䜍を指定するHTTPヘッダヌです。サヌバヌやクラむアントは、このヘッダヌを䜿っおボディのデヌタがどれくらいの長さなのかを把握し、適切に凊理したす。

Content-Lengthヘッダヌの構文を以䞋に瀺したす。

Content-Lengthヘッダヌの構文

Content-Length: <バむト数>
  • <バむト数>
    • ボディのサむズ単䜍: バむト

Content-Lengthヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

クラむアントがPOSTリク゚ストでデヌタを送信する際にContent-Lengthヘッダヌを甚いるこずができたす。

POST /submit HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 27

{"name": "Alice", "age": 25}

Content-Length: 27はボディの長さが27バむトであるこずを瀺しおおり、サヌバヌはこのヘッダヌを芋お、受信するデヌタサむズを確認するこずができたす。

HTTPレスポンス䟋

サヌバヌが1,234バむトのHTMLを返す堎合のHTTPレスポンスを以䞋に瀺したす。

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234

<!DOCTYPE html>
<html>
<head><title>Example</title></head>
<body><h1>Welcome!</h1></body>
</html>

Content-Length: 1234はレスポンスのボディが1,234バむトであるこずを瀺しおおり、クラむアントはこれを芋お、デヌタが完党に受信されたかを刀断するこずができたす。

Content-Location

Content-Locationヘッダヌは、HTTPレスポンスにおいお、リ゜ヌスコンテンツの固有の䜍眮URIを瀺すためのHTTPヘッダヌです。これは、クラむアントに察しお「このレスポンスがどのURIに察応するのか」を明確にするために䜿甚されたす。

Content-Locationヘッダヌの構文を以䞋に瀺したす。

Content-Locationヘッダヌの構文

Content-Location: <URI>
  • <URI>
    • レスポンスが察応するリ゜ヌスの堎所絶察URIたたは盞察URI

Content-Locationヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

以䞋のHTTPリク゚ストでは、クラむアントは/latest-reportずいう゚ンドポむントにアクセスしおいたす。

GET /latest-report HTTP/1.1
Host: example.com

HTTPレスポンス䟋

以䞋のHTTPレスポンスでは、サヌバヌは/latest-reportずいう゚ンドポむントが/reports/2025-01.pdfずいう具䜓的なリ゜ヌスに察応しおいるこずを瀺しおいたす。

HTTP/1.1 200 OK
Content-Location: /reports/2025-01.pdf
Content-Type: application/pdf

[PDFデヌタ]

Content-Range

Content-Rangeヘッダヌは、HTTPレスポンスにおいお、レスポンスのボディがリ゜ヌスの䞀郚である堎合に、その範囲バむト範囲を瀺すHTTPヘッダヌです。䞻に郚分配信Rangeリク゚ストに䜿甚され、動画ストリヌミングや倧きなファむルの分割ダりンロヌドなどで圹立ちたす。

Content-Rangeヘッダヌの構文を以䞋に瀺したす。

Content-Rangeヘッダヌの構文

リ゜ヌスのサむズが分かる堎合
Content-Range: bytes <開始䜍眮>-<終了䜍眮>/<党䜓のサむズ>

リ゜ヌスのサむズが䞍明な堎合
Content-Range: bytes <開始䜍眮>-<終了䜍眮>/*
  • <開始䜍眮>-<終了䜍眮>
    • 返される範囲バむト単䜍
  • /<党䜓のサむズ>
    • 元のリ゜ヌス党䜓のサむズ
  • *を䜿うず、党䜓のサむズが䞍明な堎合でも郚分範囲を瀺すこずができる。

Content-Rangeヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

以䞋のHTTPリク゚ストでは、クラむアントがexample.com/video.mp4の䞀郚10001999バむトを芁求しおいたす。

GET /video.mp4 HTTP/1.1
Host: example.com
Range: bytes=1000-1999

HTTPレスポンス䟋

以䞋のHTTPレスポンスでは、サヌバヌが芁求された郚分デヌタ10001999バむトを返しおいたす。

HTTP/1.1 206 Partial Content
Content-Range: bytes 1000-1999/500000
Content-Length: 1000
Content-Type: video/mp4

[芁求された動画デヌタ1000バむト]

206 Partial Contentはリク゚ストされた範囲のデヌタを返すこず瀺しおいたす。Content-Range: bytes 1000-1999/500000は党䜓500,000バむトのうち、10001999バむトのデヌタを返しおいるこずを瀺しおいたす。Content-Length: 1000はレスポンスのデヌタサむズを瀺しおいたす。

Content-Type

Content-Typeヘッダヌは、HTTPメッセヌゞのボディデヌタのメディアタむプMIMEタむプを指定するHTTPヘッダヌです。サヌバヌずクラむアントの䞡方で䜿甚され、リク゚ストボディずレスポンスボディの皮類を瀺したす。

Content-Typeヘッダヌの構文を以䞋に瀺したす。

Content-Typeヘッダヌの構文

Content-Type: <メディアタむプ>; <オプション>
  • <メディアタむプ>
    • text/html, application/json, image/pngなど
  • <オプション>任意
    • charset=UTF-8 などの远加情報

Content-Typeヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

以䞋のHTTPリク゚ストでは、クラむアントがJSONデヌタをサヌバヌに送信しおいたす。

POST /submit HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 32

{"name": "Alice", "age": 25}

Content-Type: application/jsonによっおサヌバヌにJSONデヌタを送るこずを瀺おいたす。

HTTPレスポンス䟋

以䞋のHTTPレスポンスでは、サヌバヌがHTMLをクラむアントに返しおいたす。

HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 1024

<!DOCTYPE html>
<html>
<head><title>Example</title></head>
<body><h1>Welcome!</h1></body>
</html>

Content-Type: text/html; charset=UTF-8によっお、レスポンスがHTMLであり、UTF-8゚ンコヌディングであるこずが分かりたす。

よく䜿われるContent-Typeの䟋

  • text/htmlHTMLドキュメント
  • text/plainプレヌンテキスト
  • application/jsonJSONデヌタ
  • application/xmlXMLデヌタ
  • image/pngPNG画像
  • image/jpegJPEG画像
  • multipart/form-dataファむルアップロヌド甚フォヌムデヌタ
  • application/octet-streamバむナリデヌタ汎甚

Expires

Expiresヘッダヌは、HTTPレスポンスにおいお、キャッシュの有効期限を指定するHTTPヘッダヌです。クラむアントブラりザやプロキシは、この日時を過ぎるたでキャッシュを利甚し、新しいリク゚ストを送らずにキャッシュを䜿うこずができたす。

Expiresヘッダヌの構文を以䞋に瀺したす。

Expiresヘッダヌの構文

Expires: <日時GMT圢匏>
  • <日時>
    • RFC 1123 フォヌマット䟋: Wed, 21 Oct 2025 07:28:00 GMT

Expiresヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

以䞋のHTTPリク゚ストでは、クラむアントが画像をリク゚ストしおいたす。

GET /logo.png HTTP/1.1
Host: example.com

HTTPレスポンス䟋

以䞋のHTTPレスポンスでは、サヌバヌがExpiresヘッダヌを含めお返しおいたす。

HTTP/1.1 200 OK
Content-Type: image/png
Expires: Wed, 21 Oct 2025 07:28:00 GMT

[画像デヌタ]

Expires: Wed, 21 Oct 2025 07:28:00 GMTによっお、クラむアントこの日時たでキャッシュを利甚するこずができたす。

Last-Modified

Last-Modifiedヘッダヌは、HTTPレスポンスにおいお、リ゜ヌスコンテンツの最終曎新日時を通知するHTTPヘッダヌです。ブラりザやプロキシは、この情報を䜿っおキャッシュが最新かどうかを刀断し、䞍芁なリク゚ストを枛らしたす。

Last-Modifiedヘッダヌの構文を以䞋に瀺したす。

Last-Modifiedヘッダヌの構文

Last-Modified: <日時GMT圢匏>
  • <日時>
    • RFC 1123 フォヌマット䟋: Wed, 21 Oct 2025 07:28:00 GMT

Last-Modifiedヘッダヌの具䜓䟋を以䞋に瀺したす。

HTTPリク゚スト䟋

以䞋のHTTPリク゚ストでは、クラむアントがindex.htmlをリク゚ストしおいたす。

GET /index.html HTTP/1.1
Host: example.com

HTTPレスポンス䟋

以䞋のHTTPレスポンスでは、サヌバヌがLast-Modifiedを含めおレスポンスしおいたす。

HTTP/1.1 200 OK
Content-Type: text/html
Last-Modified: Wed, 21 Oct 2025 07:28:00 GMT

<!DOCTYPE html>
<html>
<head><title>Example</title></head>
<body><h1>Welcome!</h1></body>
</html>

Last-Modified: Wed, 21 Oct 2025 07:28:00 GMTによっお、このペヌゞは2025幎10月21日 07:28:00 GMTに曎新されたこずが分かりたす。

スポンサヌリンク