Apache HTTP サーバ バージョン 2.1

| 説明: | HTTP リクエストのヘッダと応答のヘッダのカスタマイズ |
|---|---|
| ステータス: | Extension |
| モジュール識別子: | headers_module |
| ソースファイル: | mod_headers.c |
| 互換性: | RequestHeader
は Apache 2.0 以降のみで使用可能 |
このモジュールは HTTP のリクエストヘッダと応答ヘッダを制御し、 変更するためのディレクティブを提供します。ヘッダを追加したり、 置き換えたり、削除したりすることができます。
mod_header のディレクティブはサーバ設定のほぼどこにでも
書くことができ、影響する範囲を設定用セクションで囲むことで限定する
ことができます。
処理の順番は重要で、設定ファイル中の順番と、設定用セクション内の位置との両方に 影響されます。以下の二つのヘッダは順番が逆になると 違う結果になります:
RequestHeader append MirrorID "mirror 12"
RequestHeader unset MirrorID
この順番の場合は、MirrorID ヘッダは設定されません。
逆になっていると、MirrorID ヘッダは "mirror 12" に設定されます。
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 set|append|add|unset|echo header
[value [env=[!]variable]] |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
| 上書き: | FileInfo |
| ステータス: | Extension |
| モジュール: | mod_headers |
このディレクティブは HTTP 応答ヘッダを置換、追加、削除できます。 ヘッダはコンテントハンドラや出力フィルタが実行された直後に実行され、 出て行くヘッダを変更することが可能になっています。 行なう処理は最初の引数により決まります。これには以下の値を指定 することができます:
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 の値です。 |
Header ディレクティブが
add, append, set として
使われたときには、動作を行なう条件を四つ目の引数で指定することができます。
env=... 引数で指定された 環境変数 が存在する (もしくは env=!...
が指定されていて環境変数が存在しない) 場合は、Header
ディレクティブで指定された動作が行なわれます。そうでない場合は、
ディレクティブはそのリクエストには何もしません。
Header
ディレクティブは応答がネットワークに送られる直前に
処理されます。これは、ヘッダフィルタにより追加されるヘッダを
除き、ほとんどのヘッダを設定したり上書きしたりすることが
可能、ということです。
| 説明: | HTTP リクエストヘッダの設定 |
|---|---|
| 構文: | RequestHeader set|append|add|unset header
[value] |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
| 上書き: | FileInfo |
| ステータス: | Extension |
| モジュール: | mod_headers |
このディレクティブは HTTP リクエストヘッダを置換、追加、削除できます。 ヘッダはコンテントハンドラが実行される直前に実行され、 入って来るヘッダを変更することが可能になっています。 行なう処理は第 1 引数により決まります。これには以下の値を指定 することができます:
setappendaddappend の方を
使う方が良いでしょう。unsetこの引数の後にはヘッダ名 (header) が続きます。
ヘッダ名には最後にコロンを含めることもできますが、無くても構いません。
大文字小文字は区別されません。add,
append, set の場合は、value が三つ目の
引数として指定されます。value に空白がある場合は二重引用符で
囲む必要があります。unset の場合は、value は指定しません。
RequestHeader ディレクティブは、
fixup フェーズでリクエストがハンドラに扱われる直前に
処理されます。これにより、ブラウザや Apache の入力フィルタにより
生成されたヘッダを上書きしたり修正したりできるようになっています。