HTTPレスポンスヘッダ

通信プロトコルHTTP

HTTPレスポンスヘッダとは?

 状態:-  閲覧数:853  投稿日:2016-03-11  更新日:2016-06-15

A → B

 閲覧数:129 投稿日:2016-03-20 更新日:2016-03-25 

オブジェクト一部に対するリクエスト受入可否(Accept-Ranges)


オブジェクトの一部に対するリクエストをサーバが受け入れ可能か示す
・Range 要求において使用可能な単位をクライアントへ伝達
・現在定義されているのは bytes のみ
Accept-Ranges: bytes


予測経過時間(秒)(Age)


リソースの推定経過時間を秒単位で返す
・エンティティが生成されてからの予測経過時間(秒)
・キャッシュサーバーはAgeヘッダの値からキャッシュしたリソースが有効かどうかを判定する

このエンティティが30秒程度古いデータ(恐らくプロキシサーバで 30秒間程度保持されたもの)であることを示す例
Age: 30


サポートするHTTPメソッド(Allow)


オブジェクトがサポートするHTTPメソッドを示す
・リクエストURL で示すリソースに対して使用可能なメソッドの一覧
・下記例では、このリソースに対して GET、HEAD、PUT メソッドを使用可能であることを示す
Allow: GET, HEAD, PUT


C →

 閲覧数:147 投稿日:2016-03-20 更新日:2016-05-05 

キャッシュ(Cache-Control)


キャッシュ制御
・ブラウザや通信を橋渡しするプロキシが、データのキャッシュをどう扱うかの情報

メッセージを経由する中間キャッシュの動作を指示
・下記例では、プロキシサーバやクライアントがこのリソースをキャッシュしてはならないことを示す
・HTTP/1.0 では Pragma: no-cache が使用されます
Cache-Control: no-cache


持続(Connection)


接続状況
・ブラウザもサーバーもHTTPバージョン1.1の持続接続(keep-alive)を使える場合、通信のやりとりが効率良くなる

HTTP/1.1 でサポートされた持続機能をブラウザがサポートしている場合、その旨を相手に伝える
・1回の接続で複数のリクエスト/レスポンスを発行することが可能になる

接続を持続する(keep-alive)
Connection: Keep-Alive

毎回接続を切断する(close)
・持続接続を完了する場合、サーバは close を返却
Connection: close
その他にも、サーバ・プロキシ間、プロキシ・クライアント間のような直接接続にのみ有効なヘッダの一覧を示すために用いられる
・プロキシサーバはこのヘッダで指定されたヘッダ情報を削除して、転送しなくてはならない
Connection: Upgrade


コンテンツのエンコード方式(Content-Encoding)


コンテンツのエンコード方式を示します
・下記は、コンテンツが gzip 形式で圧縮されていることを示す
Content-Encoding: gzip


コンテンツの言語(Content-Language)


コンテンツの言語を en(英語)、ja(日本語)などで示す
・リソースを英語などの自然言語で示すのに使われる
・言語の指定はAccept-Languageヘッダと同じ
Content-Language: ja


コンテンツの長さ(Content-Length)


コンテンツ(=メッセージボディ)の長さをバイト単位で示す
・ヘッダとメッセージボディの間の改行のバイト数は除く
Content-Length: 4891


URL(Content-Location)


オブジェクトの場所
・コンテンツが別の URL でもアクセス可能なとき、そのエンティティの URL を絶対URL または相対URL で示す
Location: http://xxx.yyy.zzz/index.htm


メッセージダイジェスト(Content-MD5)


オブジェクトのメッセージダイジェストを運ぶ
・コンテンツが通信途中で改変されていないかチェックするため、コンテンツに関するチェックデータ(128ビットのMD5ダイジェストをBASE64エンコードしたもの)を示す
・メッセージボディが変更されず宛先に届くことを保証する
・MD5アルゴリズムを実行する
・但し、悪意の改ざんに対しては当然MD5も改ざんされるのであまり機能はしない
・どちらかといえば偶発的な変更の保証をしている
Content-MD5: GitH4qFa4GasgWxJs8ha5Q==


コンテンツの範囲(Content-Range)


メッセージボディで運ばれるオブジェクトの範囲
・相手に送信するコンテンツの範囲を示す
・ダウンロードの再開に用いられる
・下記例では、コンテンツ全体は 12345バイトあり、その中の 0バイト目から 999バイト目の部分を送信していることを示す
Content-Range: bytes 0-999/12345


コンテンツの種別(Content-Type)


メッセージボディに含まれるオブジェクトタイプ
・コンテンツの種別を MIMEタイプで示す
・データがHTMLなのか画像なのか
・文字コードなどの情報

コンテンツの内容がテキスト(HTML)形式であることを示す例
Content-Type: text/html

コンテンツの内容がテキスト(HTML)形式であることに加え、文字コード(Shift_JIS、euc-jp、ISO-2022-JP、UTF-8 など)を示す例
Content-Type: text/html; charset=Shift_JIS

リソースがテキストファイル、文字セットはISO-8859-4を使用していることを示す例
Content-Type: text/plain; Charset=ISO-8859-4


D → K

 閲覧数:146 投稿日:2016-03-21 更新日:2016-05-04 

メッセージの作成日時(Date)


サーバがメッセージを生成した日時を示す
・リソースの更新日時を示すLast-Modifiedヘッダとは別
・HTTP仕様ではレスポンスにDateヘッダを含めることを求めている
・但し、レスポンスのステータスがサーバエラーの場合にはDateヘッダは返らない
・曜日(Sun,)は省略可能
・日付は 1 でも 01 でも構わない
・年は 2桁でも 4桁でも構わないが 4桁が推奨されている
・秒(:23)は省略可能

HTTP/1.1では次のような形式を用いるようRFC1123で定義されている
Date: Sun, 06, Nov 1994 08:49:37 GMT

時間帯は GMT(グリニッジ標準時)を用いることが多い
Date: Sun, 04 Jan 2004 16:06:23 GMT


オブジェクトのエンティティタグ値(ETag)


エンティティとそのバージョンを一意に識別する識別子を示す
・識別子は、ファイル識別子やサイズ、更新時刻などの情報から計算される
・主にキャッシングのパフォーマンスを向上する目的で使われる

エンティティ情報
・HTMLや画像などがいつ更新されたものかの情報や、サーバー上のファイルの場所ID、ファイルのサイズ、更新日時などから算出した、更新チェック情報
・次回同じデータをリクエストする際に、これらの情報を使って更新されているかどうかを確認
ETag: "1dba6-131b-3fd31e4a"


有効期限の日時(Expires)


再利用期限
・取得したデータを再度サーバーに問い合わせなくてもブラウザが再利用していい期限キャッシュの制御に使われる)

オブジェクトの有効期限日時を示す
・このヘッダで指定された日時までキャッシュはレスポンスのコピーを保持し、リクエストに対するレスポンスとして返すことができる
・サーバがオブジェクトのキャッシュを望まない場合にはExpiresヘッダへ過去の日時を設定することが多い
・仕様では1年以上先の日時を設定できない
・有効期限を過ぎたエンティティはキャッシュから削除される
Expires: Thu, 01 Dec 1994 16:00:00 GMT
Expires: Thu, 28 Aug 2010 16:00:00 GMT

・Cache-Controlヘッダのmax-ageディレクティブはExpiresヘッダより優先されるため注意が必要


リクエスト発行者個人の情報(From)


リクエスト発行者個人の情報を示す
・リクエストを発行したユーザを特定することが出来る
・一般的にこのリクエストを行った人の電子メールアドレスを指定する
・検索エンジンがロボットで探索する場合に、探索に関する問い合わせ先のメールアドレスを通知する際などに利用される
・1990年代では電子メールアドレスを設定することが多かったが、迷惑メールの問題もあり現在では殆ど使われていない
From: aaa@xxx.yyy.zzz
From: user@example.com


L → S 

 閲覧数:132 投稿日:2016-03-21 更新日:2016-05-05 

オブジェクトが最後に変更された日時(Last-Modified)


データの最終更新日時
・HTMLや画像などがいつ更新されたものかの情報や、サーバー上のファイルの場所ID、ファイルのサイズ、更新日時などから算出した、更新チェック情報
・次回同じデータをリクエストする際に、これらの情報を使って更新されているかどうかを確認

エンティティ(一単位として扱われるデータのまとまり)が最後に更新された時刻を示す
・オブジェクトの最終更新日時
・リクエスト時のIf-Modified-Sinceヘッダと組み合わせることで、効率的な通信が可能になる
Last-Modified: Sun, 07 Dec 2003 12:34:18 GMT


移動先(Location)


リクエストと違う場所からデータを取得するように示す指示
・新しい場所のURLが含まれる
・いわゆるリダイレクト先を示す情報

サーバがクライアントへリダイレクト先URLを知らせる際に用いられる
・オブジェクトの場所を示す
・エンティティの場所が移動した場合など、ブラウザが要求した URL とは別の URL にジャンプさせたい場合に使用
・一般的にステータスコードが3xx代のレスポンスと共に使われるが201 Createdのレスポンスでも使うことができる
・URL には http:// や https:// で始まる絶対URL を指定
・Content-Locationヘッダと名前が似ているが全く関係ない別ヘッダであるため注意
Location: http://www.yyy.zzz/aaa.html


メッセージに関する追加情報(Pragma)


メッセージに関する追加情報を示す
・様々な目的で使用される
・下記はキャッシュを禁止する旨をプロキシサーバやクライアントに通知

キャッシュ制御
・ブラウザや通信を橋渡しするプロキシが、データのキャッシュをどう扱うかの情報
Pragma: no-cache


認証が必要(Proxy-Authenticate)


プロキシサーバがクライアントに認証を要求するときに用いる
・プロキシサーバとクライアントの間で認証が必要であることを示す
Proxy-Authenticate: Basic realm="XXXXXX"


リクエストの再試行をいつ行うか(Retry-After)


リクエストの再試行をいつ行うかをクライアントに通知
・数秒後に再度要求してくれという意味で、503(Service Unavailable)や 3xx(Redirection)ステータスとともに返される
・下記は、後120秒後に再要求してくれの意味
・Date: 形式の絶対時刻が返されることもある
Retry-After: 120


サーバ情報(Server)


サーバからブラウザに対してサーバ情報を返す
・サーバのベンダー名、バージョン番号
・フォーマット規定はとくになし
Server: Apache/1.3.22 (Unix) (Red-Hat/Linux)


Set-Cookie2ヘッダ(Cookie2)


サーバがクライアントにCookieを送信するときに用いる
・Set-Cookie2: は RFC 6265 により廃止

T → Z

 閲覧数:156 投稿日:2016-03-21 更新日:2016-05-05 

付加されたヘッダの一覧(Trailer)


メッセージボディの後に追加のヘッダーが表れることを示す
・ヘッダ情報をコンテンツの先頭ではなく、チャンク形式で分割送信されたコンテンツの後ろに付加する場合、そこに付加されたヘッダの一覧を示す
・これは、CGI がデータ送信した後に Content-Length ヘッダを付加したい場合などに役立つ
Trailer: Content-Length


転送エンコード形式(Transfer-Encoding)


転送に使用されるエンコード形式
・クライアントの転送を目的としたオブジェクトのエンコーディングを示す
Transfer-Encoding: chunked


別プロトコル推奨(Upgrade)


別のプロトコルを用いることを推奨する旨を相手へ伝達
・通信相手に別のプロトコルへアップデートするよう要求する
・クライアント・プロキシ間のような直接接続にのみ有効
Upgrade: HTTP/2.0, SHTTP/1.3


リクエストURI以外に用いたヘッダのリスト(Vary)


サーバがレスポンス内容を決定する際にリクエストURI以外に用いたヘッダのリストを示す
・Accept、Accept-Charset、Accept-Language など、サーバ主導型ネゴシエーションで使用されたヘッダ情報
・キャッシュの有効性を判断する際に役立つ
・例えば、下記の例には Accept-Language が含まれている
・下記は、ブラウザが Accept-Language: ja を送信したためにサーバーが日本語のコンテンツを返却している可能性があり、Accept-Language: en で要求すると別の別のコンテンツが返却される可能性があることを示す
Vary: Accept-Charset, Accept-Language


中継地点(Via)


プロキシサーバ等中継地点を示す
・メッセージの転送経路
・下記例では、メッセージが aaa → bbb → ccc というプロキシを経路して転送されたことを示す
・1.1 はプロトコルバージョン
Via: 1.1 aaa, 1.1 bbb, 1.1 ccc


メッセージに関する追加情報(Warning)


ステータス行に付加されるワーニングコードとメッセージを伝達
・通常はキャッシュの問題を警告するときに使用される
Warning: 110 xxxsv "Response is stale"


認証が必要(WWW-Authenticate)


クライアントに対してリクエストの再発行を要求する
・認証情報も含まれる
・認証が必要であることを示す
・下記の例では、このリソースが BASIC認証という、HTTP で最も基本的な方式で保護されていることを示す
・XXXXXX の部分にはこの認証に関する説明文が入る
WWW-Authenticate: Basic realm="XXXXXX"


サーバの実装による様々なヘッダ(extension-header )


上記の他にも、サーバの実装により様々なヘッダが実装されています







その他

 閲覧数:143 投稿日:2016-05-05 更新日:2016-05-24 
HTMLの<meta http-equiv="xxx" content="xxx">タグ
・「この内容がHTTPレスポンスのHTTPヘッダーに含まれていたとして扱いなさい」という意味
・だから、meta http-equivでContent-TypeやCache-Controlを指定する





Twitter検索結果。「HTTPレスポンスヘッダ」に関する最新ツイート


HTTPリクエストヘッダ

HTTP仕様



週間人気ページランキング / 9-14 → 9-20
順位 ページタイトル抜粋 アクセス数
1 PHPのmb_send_mail関数でメール送信できない | メール処理システム 29
2 Nginx設定。エラーログレベル | Nginx(Webサーバ) 21
3 Python 3.5 アンインストール / yum remove | Python(プログラミング言語) 11
4 FFmpeg 2.8.15 を yum インストール | ソフトウェアスイート 10
5 PHP実行ユーザ設定 / CentOS6 / Apache | PHP(プログラミング言語) 9
6 PHP Version 7.1.2 php-mecabエクステンション対応 / PHP 7.0.14 からのアップグレード  | MeCab(形態素解析) 8
6 ソースからビルドしたPython 2.7.3 アンインストール失敗 | Python(プログラミング言語) 8
7 touch コマンド / viコマンド。新規ファイル作成時の違い | Linuxコマンド 7
7 さくらVPS0 7
8 9回目-13.MySQL5.7.21設定 | CentOS 7 2週間無料のお試し期間 9回目(さくらVPS) 6
8 「設定ファイルに、暗号化 (blowfish_secret) 用の非公開パスフレーズの設定を必要とするようになりました。」対応 6
9 PHPファイルでchmodエラー | PHP(プログラミング言語) 5
9 設定 2019/1/22 / 一般ユーザがmailコマンドでメール送信 / 管理者がmailコマンドでメール送信 5
10 Postfix | メール処理システム 4
10 CentOSでcpコマンド動作確認するためには、Control + T ではなく、 -v オプションを使用 | cp(Linuxコマンド) 4
10 499 (Request has been forbidden by antivirus) | HTTP(通信プロトコル) 4
10 tar | Linuxコマンド 4
10 Python 3.6 インストール / make altinstall | Python(プログラミング言語) 4
10 「CentOS6」から「CentOS7」への移行 | CentOS 7 (CentOS) 4
10 echo と cat の違い 4
2021/9/21 1:01 更新