HTTPヘッダーフィールド3

Connection

Connectionヘッダーフィールドは、2つの役割を持つ
  • 指定したヘッダーフィールドをホップバイホップヘッダーにする
  • Connection: ホップバイホップヘッダーにするヘッダーフィールド名
    例
    Connection: Upgrade

    クライアントからのリクエスト、サーバーからのレスポンスでConnectionヘッダーフィールドを使うと、指定されたヘッダーフィールド名をホップバイホップヘッダーにする。つまり、プロキシサーバーに対してそれ以上転送しないヘッダーフィールドを指定することができる。
    ここに、エンドトゥエンドヘッダーを指定することはできない。



  • 持続的接続の管理
  • Connection: Close

    HTTP/1.1では、持続的接続が既定である。
    サーバー側が接続を閉じたい場合、ConnectionヘッダーフィールドにCloseを指定する。

    Connection: Keep-Alive

    HTTP/1.1以前のバージョンのHTTPでも、持続的接続をしたい場合は、ConnectionヘッダフィールドにKeep-Aliveと指定する必要がある。

    GET / HTTP/1.1
    Connection: Keep-Alive
    HTTP/1.1 200 OK
    Keep-Alive: timeout=10, max=100
    Connection: Keep-Alive


    Date

    Date: Mon, 27 Dec 2001 19:00:00 GMT

  • Dateヘッダーフィールドは、HTTPメッセージを生成した日時を表す。

  • Pragma

  • Pragmaヘッダーフィールドは、HTTP/1.1より古いバージョンの名残で、HTTP/1.0との後方互換性のためだけに定義されているヘッダーフィールド

  • 指定できる形式は1つだけ
  • Pragma: no-cache

  • これは、汎用ヘッダーフィールドだが、クライアントからのリクエストでのみ使われる。

  • クライアントがすべての中間サーバーに対して「キャッシュされたリソースでの応答は望みません」と要求するために使われる

  • 中間サーバーがHTTP/1.1に準拠しているなら"Cache-Control: no-cache"を使うべき

  • 中間サーバーのHTTPバージョンを把握するのは現実的でないので、"Pragma: no-cache"はよく使われる

  • Trailer

  • Trailerヘッダーフィールドは、メッセージボディの後ろに記述されるヘッダーフィールドをあらかじめ伝えることができる。

  • Trailerは、チャンク転送エンコーディングを使用しているときに使うことができる
  • HTTP/1.1 200 OK
    Trailer: Expires
    
    ----------------
    Message Body
    ----------------
    0
    Expires: Tue, 10 Nov 2007 12:12:12 GMT


    Transfer-Encoding

  • メッセージボディの転送コーディング形式を指定するときに使われる

  • HTTP/1.1では、チャンク転送コーディングのみが定義されている
  • Transfer-Encoding: chunked


    Upgrade

  • HTTPおよび他のプロトコルの新しいバージョンが通信に利用されるときに使われる

  • 指定するのは、別のプロトコルでもよい
  • GET / HTTP/1.1
    Upgrade: TLS/1.0
    Connection: Upgrade
    HTTP/1.1 101 Switching Protocols
    Upgrade: TLS/1.0, HTTP/1.1
    Connection: Upgrade


  • Upgradeヘッダーフィールドによってアップグレード対象となるのは、クライアントと隣接しているサーバー間だけなので、Upgradeヘッダーフィールドを使用するには、Connection: Upgradeも指定しなければならない。

  • Upgradeヘッダーフィールドが付いたリクエストに対して、サーバーはステータスコード"101 Switching Protocols"を応答する
  • Via

  • クライアント、サーバー間でのリクエストまたはレスポンスのメッセージの経路を知るために使用される

  • プロキシあるいはゲートウェイで、自サーバーの情報をViaヘッダーフィールドに追加してから次にメッセージを転送する。

  • リクエストのループを回避するためにも、Viaヘッダーフィールドは、プロキシを経由する場合には、必ず付加する必要がある

  • Viaヘッダーは、配送経路を知るために、TRACEメソッドと連携してよく使われる。

  • Warning

  • レスポンスに関する追加情報を伝える

  • 基本的にはキャッシュに問題があるとユーザーに警告を伝える

  • Warning: [警告コード] [警告したホスト:ポート番号] "[警告文]" ([日時])

  • HTTP/1,1では7つの警告コードが定義されている

  • コード警告文(推奨)説明
    110Response is staleプロキシが有効期限の切れたリソースを返した
    111Revalidation failedプロキシがリソースの有効性の再確認に失敗した(サーバーに到達できないなど)
    112Disconnection operationプロキシがネットワークから故意に切断されている
    113Heuristic expirationレスポンスが24時間以上経過している場合(キャッシュの有効期限が24時間以上に設定している場合)
    199Miscellaneous warning任意の警告文
    214Transformation appliedプロキシがエンコーディングやメディアタイプなどに対して何らかの処理を行った場合
    299Miscellaneous persistent warning任意の警告文


    参考文献:今夜わかるHTTP(上野宣)