メインコンテンツまでスキップ

14. Header Field Definitions (ヘッダフィールド定義)

この章では、HTTP/1.1標準におけるすべての標準HTTPヘッダフィールドの構文とセマンティクスを定義します。送信者は、受信者がエンティティボディの一部として扱わない限り、この章または第7.1節(エンティティヘッダフィールド)で定義されていないヘッダフィールドを生成すべきではありません (SHOULD NOT)。

ヘッダフィールドの分類

HTTPヘッダフィールドは、機能に応じて以下のカテゴリに分類できます:

一般ヘッダフィールド (General Header Fields)

リクエストおよびレスポンスメッセージに適用されますが、転送されるエンティティには適用されません。

リクエストヘッダフィールド (Request Header Fields)

クライアントがリクエストおよびクライアント自身に関する追加情報をサーバーに渡すことができます。

レスポンスヘッダフィールド (Response Header Fields)

サーバーがステータス行に配置できないレスポンスに関する追加情報を渡すことができます。

エンティティヘッダフィールド (Entity Header Fields)

エンティティボディまたはリクエストで識別されるリソースに関するメタ情報を定義します。


HTTP/1.1 ヘッダフィールド完全リスト

コンテンツネゴシエーションヘッダフィールド

ヘッダフィールド用途
14.1 Acceptクライアントが受け入れ可能なメディアタイプを指定Accept: text/html, application/json
14.2 Accept-Charsetクライアントが受け入れ可能な文字セットを指定Accept-Charset: utf-8, iso-8859-1
14.3 Accept-Encodingクライアントが受け入れ可能なコンテンツエンコーディングを指定Accept-Encoding: gzip, deflate
14.4 Accept-Languageクライアントが優先する言語を指定Accept-Language: ja, en
14.5 Accept-Rangesサーバーが範囲リクエストを受け入れるかどうかを示すAccept-Ranges: bytes

認証ヘッダフィールド

ヘッダフィールド用途タイプ
14.8 Authorizationユーザーエージェントの認証資格情報を含むリクエストヘッダ
14.33 Proxy-Authenticateプロキシサーバーの認証チャレンジレスポンスヘッダ
14.34 Proxy-Authorizationクライアントがプロキシに提供する認証資格情報リクエストヘッダ
14.47 WWW-Authenticateサーバーの認証チャレンジレスポンスヘッダ

キャッシュ制御ヘッダフィールド

ヘッダフィールド用途説明
14.6 Ageレスポンスがプロキシキャッシュに滞在した時間レスポンスヘッダ
14.9 Cache-Controlキャッシング指令を指定一般ヘッダ
14.21 Expiresレスポンスの有効期限の日付/時刻を指定エンティティヘッダ
14.32 Pragma実装固有の指令(後方互換性)一般ヘッダ
14.44 Varyどのリクエストヘッダがキャッシュ選択に影響するかを示すレスポンスヘッダ

条件付きリクエストヘッダフィールド

ヘッダフィールド用途検証方法
14.24 If-MatchETagが一致する場合のみ実行強検証
14.25 If-Modified-Sinceリソースが変更された後にのみ実行時刻検証
14.26 If-None-MatchETagが一致しない場合のみ実行強/弱検証
14.27 If-Range条件付き範囲リクエスト組み合わせ検証
14.28 If-Unmodified-Sinceリソースが変更されていない場合のみ実行時刻検証

コンテンツ記述ヘッダフィールド

ヘッダフィールド用途説明
14.11 Content-Encodingエンティティボディに適用されるエンコーディングgzip, compress, deflate
14.12 Content-Languageエンティティボディの自然言語ja, en-US
14.13 Content-Lengthエンティティボディのバイト長数値
14.14 Content-Locationエンティティの代替位置URI
14.15 Content-MD5エンティティボディのMD5ダイジェストBase64エンコード
14.16 Content-Range部分エンティティボディの位置bytes 200-1000/1234
14.17 Content-Typeエンティティボディのメディアタイプtext/html; charset=utf-8

接続管理ヘッダフィールド

ヘッダフィールド用途説明
14.10 Connection現在の接続のオプションを制御keep-alive, close
14.23 Hostリクエストのホストとポート番号必須のリクエストヘッダ
14.39 TEクライアントが受け入れ可能な転送エンコーディングtrailers, deflate
14.40 Trailerメッセージトレーラーに存在するヘッダフィールドを示すチャンクエンコーディング
14.41 Transfer-Encodingメッセージボディに適用される転送エンコーディングchunked
14.42 Upgrade他のプロトコルへの切り替えをリクエストHTTP/2.0, WebSocket
14.45 Via中間プロキシとゲートウェイを記録パスの追跡

エンティティ検証ヘッダフィールド

ヘッダフィールド用途タイプ
14.19 ETagエンティティタグ(一意の識別子)強/弱バリデータ
14.29 Last-Modifiedリソースの最終変更時刻タイムスタンプ

リクエスト制御ヘッダフィールド

ヘッダフィールド用途説明
14.7 AllowリソースがサポートするHTTPメソッドGET, POST, PUT
14.20 Expectクライアントが期待する特定のサーバー動作100-continue
14.22 Fromリクエストユーザーの電子メールアドレス情報提供
14.31 Max-ForwardsTRACE/OPTIONSリクエストの最大転送回数数値
14.35 Rangeエンティティの部分コンテンツをリクエストbytes=0-499
14.36 RefererリクエストURIの参照元アドレスURI

レスポンス制御ヘッダフィールド

ヘッダフィールド用途説明
14.18 Dateメッセージの作成日時HTTP日付形式
14.30 Locationリダイレクトまたは新規作成リソースのURI絶対/相対URI
14.37 Retry-Afterクライアントが再試行すべき時期を提案日付または秒数
14.38 Serverオリジンサーバーのソフトウェア情報ソフトウェア名とバージョン
14.46 Warning追加の警告情報3桁の警告コード

ユーザーエージェント情報

ヘッダフィールド用途説明
14.43 User-Agentリクエストを開始したユーザーエージェント情報ブラウザ識別

ヘッダフィールド構文規則

すべてのHTTP/1.1ヘッダフィールド値の構文規則は、第2.2節(基本規則)およびこのセクションで説明されています。

一般的な構文規則

message-header = field-name ":" [ field-value ]
field-name = token
field-value = *( field-content | LWS )

複数値ヘッダフィールド

一部のヘッダフィールドには複数の値を含めることができ、以下の2つの方法で表現できます:

  1. 単一のヘッダフィールド、値はカンマ区切り:

    Accept: text/html, application/json, */*
  2. 同名の複数のヘッダフィールド:

    Accept: text/html
    Accept: application/json
    Accept: */*

日付/時刻形式

HTTPアプリケーションは、以下の3つの日付/時刻形式を受け入れる必要があります:

Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
Sun Nov 6 08:49:37 1994 ; ANSI C asctime() format

重要な注意事項

ヘッダフィールドの拡張性

HTTP/1.1は拡張ヘッダフィールドを許可しますが、受信者は未知のヘッダフィールドを処理できる必要があります:

  • プロキシ - 認識できないヘッダフィールドを転送しなければなりません
  • ユーザーエージェント - 認識できないヘッダフィールドを無視すべきです

ヘッダフィールドの順序

ヘッダフィールドの定義で別途指定されていない限り、ヘッダフィールドの順序は重要ではありません。ただし、最初に一般ヘッダフィールド、次にリクエストヘッダまたはレスポンスヘッダフィールド、最後にエンティティヘッダフィールドを送信することを推奨します。

ヘッダフィールドのサイズ制限

HTTPはヘッダフィールドの長さに事前定義された制限を設けていませんが、実装は任意の合理的な長さのヘッダフィールドを受け入れる準備をすべきです。


関連参照

  • ヘッダフィールドの完全な定義については、RFC 2616 第14章原文を参照してください
  • 更新されたヘッダフィールド仕様については、RFC 7230-7235 (HTTP/1.1新バージョン) を参照してください
  • IANA HTTPヘッダフィールドレジストリ:https://www.iana.org/assignments/message-headers

注意:この章では、すべての標準HTTP/1.1ヘッダフィールドの概要を提供しています。各ヘッダフィールドには、詳細な構文規則、使用シナリオ、および例があります。実際のアプリケーションでは、これらのヘッダフィールドの正しい使用法を理解することが、標準に準拠したHTTPアプリケーションを構築する上で重要です。