Apache HTTP サーバ バージョン 2.4

| 説明: | HTTP リクエストのヘッダと応答のヘッダのカスタマイズ | 
|---|---|
| ステータス: | Extension | 
| モジュール識別子: | headers_module | 
| ソースファイル: | mod_headers.c | 
| 互換性: | RequestHeaderは Apache 2.0 以降のみで使用可能 | 
このモジュールは HTTP のリクエストヘッダと応答ヘッダを制御し、 変更するためのディレクティブを提供します。ヘッダを追加したり、 置き換えたり、削除したりすることができます。
mod_headers のディレクティブはサーバ設定のほぼどこにでも
    書くことができ、影響する範囲を設定用セクションで囲むことで限定する
    ことができます。
処理の順番は重要で、設定ファイル中の順番と、設定用セクション内の位置との両方に 影響されます。以下の二つのヘッダは順番が逆になると 違う結果になります:
      RequestHeader append MirrorID "mirror 12"
      RequestHeader unset MirrorID
    
この順番の場合は、MirrorID ヘッダは設定されません。
    逆になっていると、MirrorID ヘッダは "mirror 12" に設定されます。
mod_headers では、リクエストの早期か後期かの
    どちらで適用するかを選べます。通常は後期モードで、
    コンテンツ生成が実行される直前にリクエストヘッダがセットされ、
    レスポンスとして送出される直前にレスポンスヘッダがセットされます。
    運用中のサーバでは必ず後期モードを使ってください。
早期モードは開発者向けのテスト/デバッグ用に設計されています。
    early キーワード指定されたディレクティブによって、
    リクエスト処理の開始地点になります。
    つまり、異なるリクエストを試したりテストケースをセットアップするのに
    活用できる一方で、レスポンスを生成する前に他のモジュールによって
    ヘッダが書き換えられてしまうかもしれないということを意味します。
early ディレクティブではリクエストパスの設定が解決される前に
    処理されるので、メインサーバかバーチャルホストコンテキストでのみ、
    早期ヘッダをセットできます。early ディレクティブはリクエストパスに
    依存することはできませんので、<Directory> や
    <Location> といったコンテキスト内では使用
    できません。
          Header echo ^TS
        
MyHeader を応答に追加します。このヘッダはクライアントが
        サーバの負荷を直観的に知るためや、クライアント-サーバ間の
        ボトルネックを調べるために使うことができます。
        
           Header add MyHeader "%D %t"
        
上記の設定では、以下のようなヘッダが応答に追加されることになります:
           MyHeader: D=3775428 t=991424704447256
        
           Header add MyHeader "Hello Joe. It took %D microseconds for Apache to serve this request."
        
以下のようなヘッダが応答に追加されることになります
           MyHeader: Hello Joe. It took D=3775428 microseconds for Apache to serve this request.
        
MyHeader を応答に
      付けます。これは、クライアントの要求に応えてヘッダを作成するときに
      役に立ちます。この例では mod_setenvif モジュールが必要なことに
      注意してください。
        
           SetEnvIf MyRequestHeader value HAVE_MyRequestHeader
           Header add MyHeader "%D %t mytext" env=HAVE_MyRequestHeader
        
もし HTTP リクエストに MyRequestHeader: value ヘッダが
        あると、応答には以下のようなヘッダが付加されます。
           MyHeader: D=3775428 t=991424704447256 mytext
        
| 説明: | HTTP 応答ヘッダの設定 | 
|---|---|
| 構文: | Header [condition] set|append|add|unset|echo
header [value] [early|env=[!]variable] | 
| コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess | 
| 上書き: | FileInfo | 
| ステータス: | Extension | 
| モジュール: | mod_headers | 
このディレクティブは HTTP 応答ヘッダを置換、追加、削除できます。 ヘッダはコンテントハンドラや出力フィルタが実行された直後に実行され、 出て行くヘッダを変更できるようになっています。
オプションの condition は onsuccess か
    always のどちらかを指定できます。これは内部ヘッダテーブルのどれを
    操作するかを決定します。onsuccess は 2xx
    ステータスコードの、always は全てのステータスコード
    (2xx を含む) の意味になります。
    あるモジュールでセットされるヘッダをアンセットしたい場合は特に、
    どのテーブルが影響を受けるかを実際に試したほうがよいでしょう。
行なう処理は二番目のの引数で決まります。 この引数には次の値を指定できます:
setappendaddappend の方を
    使う方が良いでしょう。unsetechoこの引数の後にはヘッダ名 (header) が続きます。
    ヘッダ名には最後にコロンを含めることもできますが、無くても構いません。
    set, append, add,
    unset では大文字小文字は
    区別されません。echo の header 名は大文字小文字を区別し、
    正規表現を指定することもできます。
add, append,
    set では value を三つ目の
    引数として指定します。value に空白がある場合は二重引用符で
    囲む必要があります。value は文字のみからなる文字列、
    フォーマット指示子を含む文字列、もしくは両方からなる文字列を指定できます。
    value は以下のフォーマット指示子をサポートします:
| フォーマット | 解説 | 
|---|---|
| %% | パーセント記号 | 
| %t | リクエストを受け取った時刻を、
        Universal Coordinated Time での始まりの時刻 (Jan. 1, 1970) から経過した
        時間をマイクロ秒として現したもの。値の最初には t=が付加されます。 | 
| %D | リクエストを受け取った時刻と、ヘッダを送り出した
        時間との差。これは、リクエストが存在していた期間を現します。
        値の最初には D=が付加されます。 | 
| %{FOOBAR}e | 環境変数 FOOBARの値です。 | 
| %{FOOBAR}s | mod_sslが有効な場合、
        SSL 環境変数FOOBARの内容 | 
%s フォーマット指定子は 2.1 以降でのみ利用できます。
      SSLOptions +StdEnvVars を有効にすることによるオーバーヘッドを
      避けるため、%e の代わりとして使えます。
      他の理由などがあって、どうしても SSLOptions +StdEnvVars 
      を有効にしなければならない場合は、%e のほうが
      %s よりも処理効率は良いです。
Header ディレクティブには追加の引数を持たせることが
    できて、どういったアクションが行われたかの条件を指定したり、
    早期処理 を指定する early キーワードを
    指定できます。
    env=... 引数で指定された 環境変数 が存在する (もしくは env=!...
    が指定されていて環境変数が存在しない) 場合は、Header
    ディレクティブで指定された動作が行なわれます。そうでない場合は、
    ディレクティブはそのリクエストには何もしません。
早期処理モードの場合以外では、
    Header
    ディレクティブは応答がネットワークに送られる直前に
    処理されます。これは、ヘッダフィルタにより追加されるヘッダを
    除き、ほとんどのヘッダを設定したり上書きしたりすることが
    可能、ということです。
| 説明: | HTTP リクエストヘッダの設定 | 
|---|---|
| 構文: | RequestHeader set|append|add|unset header
[value] [early|env=[!]variable] | 
| コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess | 
| 上書き: | FileInfo | 
| ステータス: | Extension | 
| モジュール: | mod_headers | 
このディレクティブは HTTP リクエストヘッダを置換、追加、削除できます。 ヘッダはコンテントハンドラが実行される直前に実行され、 入って来るヘッダを変更することが可能になっています。 行なう処理は第 1 引数により決まります。これには以下の値を指定 することができます:
setappendaddappend の方を
    使う方が良いでしょう。unsetこの引数の後にはヘッダ名 (header) が続きます。
    ヘッダ名には最後にコロンを含めることもできますが、無くても構いません。
    大文字小文字は区別されません。add,
    append, set の場合は、value が三つ目の
    引数として指定されます。value に空白がある場合は二重引用符で
    囲む必要があります。unset の場合は、value は指定しません。
    value は文字列、フォーマット指定子、あるいは、その混合です。
    使うことのできるフォーマット指定子は、Header と同じですので、
    詳細はそちらをご覧ください。
RequestHeader ディレクティブは、
    どういった条件下でアクションを行うかを指定する追加引数
    あるいは、早期処理 を指定する early 
    キーワードを設定することができます。
    env=... の引数で設定されている
    環境変数 が存在している
    (あるいは env=!... で指定された環境変数が
    存在しない) 場合、RequestHeader ディレクティブは
    有効になります。それ以外の場合、ディレクティブは効力を持ちません。
early モードでない場合に限り、
    RequestHeader ディレクティブは
    fixup フェーズでリクエストがハンドラに扱われる直前に
    処理されます。これにより、ブラウザや Apache の入力フィルタにより
    生成されたヘッダを上書きしたり修正したりできるようになっています。