HTTP ヘッダー
HTTP ヘッダーにより、 HTTP リクエストやレスポンスでクライアントやサーバーが追加情報を渡すことができます。 HTTP ヘッダーは、大文字小文字を区別しないヘッダー名とそれに続くコロン (:
)、 値で構成されます。値の前にあるホワイトスペースは無視されます。
私的な独自のヘッダーは、以前は X-
接頭辞を使用していましたが、この慣習は、標準外のフィールドが標準になったときに不便が発生するため、2012 年 6 月の RFC 6648 で非推奨になりました。それ以外のヘッダーは IANA HTTP フィールド名レジストリーに収録されており、その基になったものは RFC 4229 で定義されていました。
IANA レジストリーはヘッダーを、"permanent"(標準で定義)、"provisional"(新しい)、 "deprecated"(使用は非推奨)、"obsolete"(使用できなくなった)などの状態に関する情報を含めて掲載しています。
ヘッダーは、そのコンテキストに応じて分類できます。
- リクエストヘッダー
-
読み込むリソースについての情報や、そのリソースをリクエストしているクライアントに関する詳細な情報を持ちます。
- レスポンスヘッダー
-
レスポンスに関する追加情報、例えば場所や提供しているサーバーに関する情報を保持します。
- 表現ヘッダー
-
リソースの本体に関する情報、例えば MIME タイプや適用されるエンコード/圧縮方式などについての情報を持ちます。
- ペイロードヘッダー
-
転送されるデータの表現から独立した情報、例えばコンテンツの長さや転送に使われるエンコード方式などを持ちます。
またヘッダーは、プロキシーサーバーがどのように扱うかに応じてグループ化されます。
- エンドツーエンドヘッダー
-
これらのヘッダーは、メッセージの最終的な宛先、すなわちリクエストならばサーバー、レスポンスならばクライアントに伝送しなければなりません。中間のプロキシーはヘッダーを変更せずに再伝送しなければならず、またキャッシュには保存しなければなりません。
- ホップバイホップヘッダー
-
これらのヘッダーは単一のトランスポート層の接続にのみ意味を持ち、プロキシーが再転送したり、キャッシュを行ったりしてはいけません。なお、
Connection
ヘッダーを用いて設定する場合があるのはホップバイホップヘッダーのみです。
認証
WWW-Authenticate
-
リソースへアクセスに使用すべき認証方法を定義します。
-
サーバーでユーザーエージェントを認証するための資格情報を持ちます。
Proxy-Authenticate
-
プロキシーサーバーの背後にあるリソースへアクセスできるようにするために使用すべき認証方法を定義します。
-
プロキシーサーバーでユーザーエージェントを認証するための資格情報を持ちます。
キャッシュ
Age
-
オブジェクトがプロキシーのキャッシュに存在する時間を秒数で表します。
Cache-Control
-
リクエストおよびレスポンスで、キャッシュ機能に関するディレクティブです。
Clear-Site-Data
-
リクエストしているウェブサイトに関連付けられた閲覧用のデータ (クッキー、ストレージ、キャッシュなど) を消去します。
Expires
-
レスポンスが古くなると考えられる日時を表します。
No-Vary-Search
Experimental-
URL のクエリー引数がキャッシュ照合にどのように影響するかを定義する一連のルールを指定します。これらのルールは、URL 引数が異なる同じ URL を別個のブラウザーキャッシュ項目として保存するかどうかを決定します。
条件付き
Last-Modified
-
リソースが最後に変更された日時であり、同じリソースの複数のバージョンを比較するために使用されます。
ETag
より正確さは低いのですが、環境によっては計算が容易です。If-Modified-Since
やIf-Unmodified-Since
を使用する条件付きリクエストでは、リクエストの動作を変更するためにこの値を使用します。 ETag
-
一意な文字列であり、リソースのバージョンを識別します。
If-Match
やIf-None-Match
を使用する条件付きリクエストでは、リクエストの動作を変更するためにこの値を使用します。 If-Match
-
リクエストを条件付きにして、保存されたリソースが指定した ETag のいずれかに一致する場合に限りメソッドを適用します。
If-None-Match
-
リクエストを条件付きにして、保存されたリソースが指定した ETag のいずれかに一致しない場合に限りメソッドを適用します。これはキャッシュを更新する (安全なリクエスト向け)、あるいはすでにリソースが存在する場合に新しいリソースのアップロードを止めるために使用します。
If-Modified-Since
-
リクエストを条件付きにして、そのリソースが指定した日時より後に変更されている場合に限り転送するようリクエストします。キャッシュが期限切れである場合に限りデータを転送するために使用します。
If-Unmodified-Since
-
リクエストを条件付きにして、そのリソースが指定した日時より後に変更されていない場合に限り転送するようリクエストします。これは、特定の範囲の新しい断片と古い断片の一貫性を保証する、あるいは既存の文書を変更するときに楽観的な並行性制御システムを実装するために使用します。
Vary
-
新しいものを元のサーバーにリクエストするのではなく、キャッシュされたレスポンスが使用できるよう決定するために、リクエストヘッダーを一致させる方法を定めます。
接続管理
Connection
-
現在の転送が完了した後も、ネットワークコネクションを維持するかを制御します。
Keep-Alive
-
持続的なコネクションをどれだけの期間維持するかを制御します。
コンテンツネゴシエーション
詳しくは、コンテンツネゴシエーションの記事を参照してください。
Accept
-
送り返すことができるデータの種類をサーバーに通知します。
Accept-Encoding
-
送り返すリソースで使用できるエンコードアルゴリズム (一般的には圧縮アルゴリズム) をサーバーに通知します。
Accept-Language
-
送り返すリソースで期待する自然言語をサーバーに通知します。これはヒントであり、必ずしもユーザーの完全な制御下にあるものではありません。サーバーはユーザーの選択 (ドロップダウンリストで選ぶ言語など) を明示的に上書きしないように、常に注意を払うべきです。
制御
Expect
-
リクエストを適切に扱うためにサーバーが実行しなければならないと期待されていることを示します。
Max-Forwards
-
TRACE
を使用する場合、リクエストが送信者に反映されるまでにできる最大のホップ数を示します。
クッキー
-
過去に
Set-Cookie
ヘッダーでサーバーから送信されて保存している HTTP クッキーを持ちます。 -
サーバーからユーザーエージェントにクッキーを送信します。
CORS
詳細は、CORS のドキュメントを参照してください。
Access-Control-Allow-Credentials
-
credentials フラグが真であるときに、リクエストへのレスポンスを開示してよいかを示します。
Access-Control-Allow-Headers
-
プリフライトリクエストへのレスポンスで使用し、実際のリクエストを行うときに使用できる HTTP ヘッダーを指定します。
Access-Control-Allow-Methods
-
プリフライトリクエストへのレスポンスで、リソースへアクセスするときに使用できるメソッドを指定します。
Access-Control-Allow-Origin
-
レスポンスが共有可能かを示します。
Access-Control-Expose-Headers
-
ヘッダー名を羅列して、レスポンスの一部として開示できるヘッダーを示します。
Access-Control-Max-Age
-
プリフライトリクエストの結果をキャッシュしてよい期間を示します。
Access-Control-Request-Headers
-
実際のリクエストを行う際に使用する HTTP ヘッダーをサーバーがわかるようにするため、プリフライトリクエストを発信する際に使用します。
Access-Control-Request-Method
-
実際のリクエストを行う際に使用する HTTP メソッドをサーバーがわかるようにするため、プリフライトリクエストを発信する際に使用します。
Origin
-
どこから読み込みが発生したかを示します。
Timing-Allow-Origin
-
リソースタイミング API の機能を通じて受け取った属性の値を見ることができるオリジンを指定します。そうでなければオリジン間の制約によってゼロとして報告されます。
ダウンロード
Content-Disposition
-
転送したリソースをインラインで表示すべきか (ヘッダーが存在しない場合の既定の動作)、またはダウンロードとして扱い、「名前を付けて保存」ウィンドウを表示すべきかを示します。
メッセージ本文の情報
Content-Length
-
リソースの大きさを、バイト単位の10進数で示します。
Content-Type
-
リソースのメディア種別を示します。
Content-Encoding
-
圧縮アルゴリズムを指定するために使用します。
Content-Language
-
読者向けに言語を示すヘッダーであり、ユーザーが自身の好む言語に応じて区別することができます。
Content-Location
-
返すデータの代替データの場所を示します。
プロキシー
リダイレクト
Location
-
ページのリダイレクト先の URL を示します。
Refresh
-
ブラウザーにページを再読み込みするか、別のページにリダイレクトするように指示します。
http-equiv="refresh"
を持つmeta
要素と同じ値をとります。
リクエストコンテキスト
From
-
リクエストを行うユーザーエージェントを操作している人間の、インターネット電子メールアドレスを持ちます。
Host
-
サーバーのドメイン名(バーチャルホスト向け)およびサーバーが待ち受けている TCP ポート番号(省略可能)を指定します。
Referer
-
現在リクエストしているページへリンクしていた、前のウェブページのアドレスです。
Referrer-Policy
-
Referer
ヘッダーで送信するどのリファラー情報をリクエストに含めるかを制御します。 User-Agent
-
リクエストを行うユーザーエージェントソフトウェアのアプリケーションタイプ、オペレーティングシステム、ベンダー、バージョンを、ネットワークプロトコルのピアが識別できるようにする文字列を持ちます。
レスポンスコンテキスト
範囲付きリクエスト
Accept-Ranges
-
サーバーが範囲付きリクエストに対応するかどうか、対応していれば対応する場合は、範囲を表すことができる単位を示します。
Range
-
サーバーが返すべきである文書の範囲を示します。
If-Range
-
指定した ETag または日時がリモートのリソースにマッチする場合に限定した、条件付き範囲付きリクエストを生成します。異なるバージョンのリソースから 2 つの範囲をダウンロードすることを防ぎます。
Content-Range
-
部分的なメッセージが、メッセージ本文全体のどこに位置するかを示します。
セキュリティ
Cross-Origin-Embedder-Policy
(COEP)-
サーバーが指定された文書の埋め込み方針を宣言するために使います。
Cross-Origin-Opener-Policy
(COOP)-
他のドメインがウィンドウを開いたり制御したりすることを防ぎます。
Cross-Origin-Resource-Policy
(CORP)-
このヘッダーが適用されたリソースのレスポンスが他のドメインから読み取られるのを防ぎます。CORP の説明記事を参照してください。
Content-Security-Policy
(CSP)-
ユーザーエージェントがページで読み込むことを許可するリソースを制御します。
Content-Security-Policy-Report-Only
-
ウェブの開発者がポリシーの効果を適用せずに監視することで、実験を行うことができます。これらの違反レポートは、 HTTP
POST
リクエストによって指定した URI へ送信される JSON 文書で構成されます。 Permissions-Policy
-
自身のフレームまたはその中に埋め込まれた
<iframe>
で、ブラウザーの機能を使用することを許可または拒否する仕組みを提供します。 Strict-Transport-Security
(HSTS)-
HTTP の代わりに HTTPS による通信を強制します。
Upgrade-Insecure-Requests
-
暗号化や認証されたレスポンスについて、クライアントの設定を表す信号をサーバーに送信して、
upgrade-insecure-requests
ディレクティブを正しく扱うことができます。 X-Content-Type-Options
-
ブラウザーで MIME スニッフィングを無効化して、
Content-Type
で指定したタイプを強制的に使用させます。 X-Frame-Options
(XFO)-
ブラウザーがページを
<frame>
,<iframe>
,<embed>
,<object>
の内部に表示することを許可するかを示します。 X-Permitted-Cross-Domain-Policies
-
クロスドメインポリシーファイル (
crossdomain.xml
) を許可するかどうかを指定します。このファイルは、 Adobe の Flash Player、Adobe Acrobat、Microsoft Silverlight、Apache Flex などのクライアントに、同一オリジンポリシーによって制限されているドメイン間のデータを処理する許可を与えるポリシーを定義することができます。詳細については、 Cross-domain Policy File Specification を参照してください。 X-Powered-By
-
ホスティング環境やその他のフレームワークによって設定される可能性があり、アプリケーションや訪問者に有益ではない情報を含みます。潜在的な脆弱性が発現することを防ぐために、このヘッダーは設定しないでください。
X-XSS-Protection
-
クロスサイトスクリプティングのフィルタリングを有効化します。
メタデータ読み取りリクエストヘッダー
メタデータ読み取りリクエストヘッダーは、リクエストが発生したときのコンテキストに関する情報を提供します。サーバーはこれを利用して、リクエストがどこから来たのか、リソースがどのように使用されるのかに基づいて、リクエストを許可すべきかどうかを判断することができます。
Sec-Fetch-Site
-
リクエスト開始元のオリジンと宛先のオリジンとの関係を示します。これは構造化ヘッダーで、値はトークンであり、取りうる値は
cross-site
,same-origin
,same-site
,none
です。 Sec-Fetch-Mode
-
サーバーへのリクエストモードを示します。これは構造化ヘッダーで、値はトークンであり、取りうる値は
cors
,navigate
,nested-navigate
,no-cors
,same-origin
,websocket
です。 Sec-Fetch-User
-
ナビゲーションリクエストがユーザー操作によって起動されたかどうかを示します。これは構造化ヘッダーであり、論理値で、取りうる値は
?0
ならば偽、?1
ならば真です。 Sec-Fetch-Dest
-
リクエストの宛先を示します。これは構造化ヘッダーで、値はトークンであり、取りうる値は
audio
,audioworklet
,document
,embed
,empty
,font
,image
,manifest
,object
,paintworklet
,report
,script
,serviceworker
,sharedworker
,style
,track
,video
,worker
,xslt
です。
以下のリクエストヘッダーは、厳密には「メタデータ読み取りリクエストヘッダー」ではありませんが、同様にリソースがどのように使用されるかのコンテキストに関する情報を提供します。サーバーはキャッシュの動作や返す情報を変更するためにこれらを使用するかもしれません。
Sec-Purpose
-
リクエストがユーザーエージェントによって直ちに使用される以外の目的である場合に、その目的を示します。このヘッダーは現在一つの可能な値
prefetch
を持っており、これはリソースが将来のナビゲーションのために優先的に読み取られていることを示します。 -
サービスワーカーの起動中に、リソースに対して
fetch()
で先制的なリクエストをする際に送られるリクエストヘッダーです。この値はNavigationPreloadManager.setHeaderValue()
で設定され、通常のfetch()
処理とは異なる形でリソースを返すべきことをサーバーに通知するために使用することができます。
サーバー送信イベント
Report-To
-
警告やエラーを送信るためのブラウザーに対するサーバーのエンドポイントを指定するために使用します。
転送エンコーディング
Transfer-Encoding
-
エンティティをユーザーへ問題なく転送できるエンコード形式を指定します。
TE
-
ユーザーエージェントが進んで受け入れる転送エンコーディングを指定します。
Trailer
-
送信者が chunk メッセージの終端に追加フィールドを含めることができます。
その他
Alt-Svc
-
このサービスに到達するための代替方法を列挙するために使用されます。
Alt-Used
-
使用中の代替サービスを識別するために用いられます。
Date
-
メッセージが発信された日時を保持します。
Link
-
これは、HTTP ヘッダーで 1 つ以上のリンクをシリアライズする意味を提供するエンティティヘッダーフィールドです。意味付けは HTML の
<link>
要素と同じです。 Retry-After
-
ユーザーエージェントがフォローアップリクエストをする前に待つべき時間を示します。
Server-Timing
-
指定されたリクエストレスポンスサイクルについて、1 つ以上の指標および説明を伝えます。
Service-Worker-Allowed
-
パス制限を除去するために、サービスワーカースクリプトのレスポンスにこのヘッダーを記載します。
SourceMap
-
生成されたコードをソースマップにリンクします。
Upgrade
-
これは HTTP/1.1(のみ)のヘッダーで、すでに確立されているクライアント/サーバー接続を(同じトランスポートプロトコル上で)異なるプロトコルにアップグレードするために使用することができます。例えば、クライアントが HTTP 1.1 から HTTP 2.0 に接続をアップグレードしたり、HTTP や HTTPS 接続を WebSocket にアップグレードするために使用することができます。
実験的なヘッダー
帰属レポートヘッダー
帰属レポート APIを使用すると、開発者がコンバージョンを測定することができます。例えば、ユーザーがあるサイトに埋め込まれた広告をクリックし、ベンダーのサイトで商品を購入した場合、そのコンバージョンに関するレポートにアクセスすることができます。サードパーティーのトラッキングクッキーに頼らずに、様々なヘッダーを頼りに、コンバージョンを示すために一致させるソースとトリガーを登録します。
Attribution-Reporting-Eligible
-
現在のリクエストに対応するレスポンスが、帰属ソースまたはトリガーのいずれかを登録する ことによって、帰属レポートに参加する資格があることを示すために使用され ます。
Attribution-Reporting-Register-Source
-
Attribution-Reporting-Eligible
ヘッダーを含むリクエストに対するレスポンスの一部として記載され、これは帰属ソースを登録するために使用されます。 Attribution-Reporting-Register-Trigger
-
Attribution-Reporting-Eligible
ヘッダーを含むリクエストに対するレスポンスの一部として記載され、これは帰属トリガーを登録するために使用します。
クライアントヒント
HTTP クライアントヒントは一連のリクエストヘッダーで、端末の種類や ネットワークの状態といったクライアントに関する有益な情報を提供し、 サーバーがそれらの状態に応じて提供されるものを最適化できるようにします。
サーバーは Accept-CH
を使用して、クライアントに関心があるクライアントヒントヘッダーを積極的にリクエストします。クライアントはリクエストされたヘッダーをその後のリクエストに記載することを選べます。
Accept-CH
Experimental-
サーバーは Accept-CH ヘッダーフィールドや HTML
<meta>
要素のhttp-equiv
属性を使ってクライアントヒントに対応していることを告知できます。 Critical-CH
Experimental-
サーバーは
Critical-CH
をAccept-CH
とともに使用して、受け入れられるクライアントヒントも重要なクライアントヒントであることを指定します。
クライアントヒントのカテゴリーを以下に一覧します。
ユーザーエージェントクライアントヒント
UA クライアントヒントは、ユーザーエージェント、それが動作しているプラット フォーム/アーキテクチャ、ユーザーエージェントまたはプラットフォームで設定され ているユーザーの環境設定についての情報を提供するリクエストヘッダーです。
Sec-CH-UA
Experimental-
ユーザーエージェントのブランドとバージョンです。
Sec-CH-UA-Arch
Experimental-
ユーザーエージェントの基盤となっているプラットフォームアーキテクチャです。
Sec-CH-UA-Bitness
Experimental-
ユーザーエージェントの基盤となっている CPU のビットのアーキテクチャ(例えば "64" ビット)です。
Sec-CH-UA-Full-Version-List
Experimental-
ユーザーエージェントのブランドリストにある各ブランドの完全版。
Sec-CH-UA-Mobile
Experimental-
ユーザーエージェントがモバイル端末で動作している、またはより一般的には「モバイル」ユーザー環境設定を推奨している場合。
Sec-CH-UA-Model
Experimental-
ユーザーエージェントの端末モデル。
Sec-CH-UA-Platform
Experimental-
ユーザーエージェントの基盤となっているオペレーティングシステム/プラットフォーム。
Sec-CH-UA-Platform-Version
Experimental-
ユーザーエージェントの基盤となっているオペレーティングシステムのバージョン。
Sec-CH-UA-Prefers-Color-Scheme
Experimental-
ユーザーのダークまたはライトモードの環境設定。
Sec-CH-UA-Prefers-Reduced-Motion
Experimental-
ユーザーの環境設定として、アニメーションやコンテンツレイアウトの変化が少ないことが推奨されていること。
端末クライアントヒント
Device-Memory
Experimental-
利用できるクライアント RAM メモリーのおおよその量。これは端末メモリー API の一部です。
ネットワーククライアントヒント
ネットワーククライアントヒントにより、サーバーはユーザーの選択に基いて送信する情報や ネットワークの帯域幅や遅延時間を選べます。
Downlink
Experimental-
クライアントからサーバーへの接続のおおよその帯域幅(Mbps 単位)。これはネットワーク情報 API の一部です。
ECT
Experimental-
接続の遅延と帯域幅に最も一致する 有効接続種別(「ネットワークプロファイル」)。これはネットワーク情報 API の一部です。
RTT
Experimental-
アプリケーション層のラウンドトリップ時間 (RTT)。ミリ秒単位で、サーバーの処理時間を記載します。これはネットワーク情報 API の一部です。
Save-Data
Experimental-
文字列
on
で、ユーザーエージェントがデータ使用量を縮小することを推奨することを示します。
プライバシー
Sec-GPC
非標準 Experimental-
ウェブサイトやサービスワーカースクリプトが、ユーザーの個人情報を第三者に販売または共有することにユーザーが同意するかどうかを示します。
セキュリティ
Origin-Isolation
Experimental-
ウェブアプリケーションがそのオリジンを分離できるようにする仕組みを提供します。
サーバー送信イベント
NEL
Experimental-
開発者がネットワークエラー報告ポリシーを宣言できるようにする仕組みを定義します。
その他
Accept-Push-Policy
Experimental-
クライアントはリクエストに対して求めるプッシュポリシーを、リクエスト内で
Accept-Push-Policy
ヘッダーフィールドを送信することで表現することができます。 Accept-Signature
Experimental-
クライアントは
Accept-Signature
ヘッダーフィールドを送信して、利用可能な署名を利用する意図を示したり、対応している署名の種類を示したりすることができます。 Early-Data
Experimental-
このリクエストが TLS early data で送信されたことを示します。
Push-Policy
Experimental-
Push-Policy
は、リクエストを処理するときのプッシュ通知に関するサーバーの動作を定義します。 Signature
Experimental-
Signature
ヘッダーフィールドは、交換のための署名のリストを伝え、それぞれはその署名の権威を決定して、そして更新する方法についての情報を伴います。 Signed-Headers
Experimental-
Signed-Headers
ヘッダーフィールドは、シグネチャに含めるためのレスポンスヘッダーフィールドの順序付きリストを識別します。 Speculation-Rules
Experimental-
投機ルール の JSON 定義を格納したテキストリソースを指す URL のリストを提供します。レスポンスが HTML 文書の場合、これらのルールは文書の投機ルール設定に追加されます。
Supports-Loading-Mode
Experimental-
ナビゲーション対象が、よりリスクの高い様々な読み込みモードを使用することをオプトインするために設定します。例えば、オリジン間、同一サイトの事前レンダリングには
Supports-Loading-Mode
の値としてcredentialed-prerender
が要求されます。
標準外のヘッダー
X-Forwarded-For
非標準-
HTTP プロキシーやロードバランサーを経由してウェブサーバーに接続するクライアントの、接続元 IP アドレスを識別します。
X-Forwarded-Host
非標準-
プロキシーやロードバランサーに接続するクライアントがリクエストした、オリジナルのホストを示します。
X-Forwarded-Proto
非標準-
クライアントがプロキシーやロードバランサーに接続するために使用したプロトコル (HTTP または HTTPS) を識別します。
X-DNS-Prefetch-Control
非標準-
ユーザーがたどるであろうリンクや、ドキュメントが参照する画像、 CSS、 JavaScript などのリソースのドメイン名解決をブラウザーが事前に行う機能である、 DNS プリフェッチを制御します。
X-Robots-Tag
非標準-
X-Robots-Tag
ヘッダーは、一般の検索エンジンの結果でウェブページをどのように索引付けをするかを示します。このヘッダーは<meta name="robots" content="…">
と等価です。
非推奨のヘッダー
協力
新しい記事を書いたり、既存のものを改善したりすることにご協力ください。