1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"><head><!--
4 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5 This file is generated from xml source: DO NOT EDIT
6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
8 <title>mod_headers - Apache HTTP サーバ</title>
9 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11 <link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
12 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
14 <div id="page-header">
15 <p class="menu"><a href="../mod/">モジュール</a> | <a href="../mod/directives.html">ディレクティブ</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">用語</a> | <a href="../sitemap.html">サイトマップ</a></p>
16 <p class="apache">Apache HTTP サーバ バージョン 2.3</p>
17 <img alt="" src="../images/feather.gif" /></div>
18 <div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
20 <a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP サーバ</a> > <a href="http://httpd.apache.org/docs/">ドキュメンテーション</a> > <a href="../">バージョン
21 2.3</a> > <a href="./">モジュール</a></div>
22 <div id="page-content">
23 <div id="preamble"><h1>Apache モジュール mod_headers</h1>
25 <p><span>言語: </span><a href="../en/mod/mod_headers.html" hreflang="en" rel="alternate" title="English"> en </a> |
26 <a href="../fr/mod/mod_headers.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
27 <a href="../ja/mod/mod_headers.html" title="Japanese"> ja </a> |
28 <a href="../ko/mod/mod_headers.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
30 <div class="outofdate">この日本語訳はすでに古くなっている可能性があります。
31 更新された内容を見るには英語版をご覧下さい。</div>
32 <table class="module"><tr><th><a href="module-dict.html#Description">説明:</a></th><td>HTTP リクエストのヘッダと応答のヘッダのカスタマイズ</td></tr>
33 <tr><th><a href="module-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
34 <tr><th><a href="module-dict.html#ModuleIdentifier">モジュール識別子:</a></th><td>headers_module</td></tr>
35 <tr><th><a href="module-dict.html#SourceFile">ソースファイル:</a></th><td>mod_headers.c</td></tr>
36 <tr><th><a href="module-dict.html#Compatibility">互換性:</a></th><td><code class="directive"><a href="#requestheader">RequestHeader</a></code>
37 は Apache 2.0 以降のみで使用可能</td></tr></table>
40 <p>このモジュールは HTTP のリクエストヘッダと応答ヘッダを制御し、
41 変更するためのディレクティブを提供します。ヘッダを追加したり、
42 置き換えたり、削除したりすることができます。</p>
44 <div id="quickview"><h3 class="directives">ディレクティブ</h3>
46 <li><img alt="" src="../images/down.gif" /> <a href="#header">Header</a></li>
47 <li><img alt="" src="../images/down.gif" /> <a href="#requestheader">RequestHeader</a></li>
51 <li><img alt="" src="../images/down.gif" /> <a href="#order">処理の順番</a></li>
52 <li><img alt="" src="../images/down.gif" /> <a href="#early">早期処理、後期処理</a></li>
53 <li><img alt="" src="../images/down.gif" /> <a href="#examples">例</a></li>
55 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
57 <h2><a name="order" id="order">処理の順番</a></h2>
59 <p><code class="module"><a href="../mod/mod_header.html">mod_header</a></code> のディレクティブはサーバ設定のほぼどこにでも
60 書くことができ、影響する範囲を<a href="../sections.html">設定用セクション</a>で囲むことで限定する
63 <p>処理の順番は重要で、設定ファイル中の順番と、<a href="../sections.html">設定用セクション</a>内の位置との両方に
64 影響されます。以下の二つのヘッダは順番が逆になると
67 <div class="example"><p><code>
68 RequestHeader append MirrorID "mirror 12"<br />
69 RequestHeader unset MirrorID
72 <p>この順番の場合は、<code>MirrorID</code> ヘッダは設定されません。
73 逆になっていると、MirrorID ヘッダは "mirror 12" に設定されます。</p>
74 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
76 <h2><a name="early" id="early">早期処理、後期処理</a></h2>
77 <p><code class="module"><a href="../mod/mod_headers.html">mod_headers</a></code> では、リクエストの早期か後期かの
78 どちらで適用するかを選べます。通常は後期モードで、
79 コンテンツ生成が実行される直前にリクエストヘッダがセットされ、
80 レスポンスとして送出される直前にレスポンスヘッダがセットされます。
81 運用中のサーバでは必ず後期モードを使ってください。</p>
83 <p>早期モードは開発者向けのテスト/デバッグ用に設計されています。
84 <code>early</code> キーワード指定されたディレクティブによって、
86 つまり、異なるリクエストを試したりテストケースをセットアップするのに
87 活用できる一方で、レスポンスを生成する前に他のモジュールによって
88 ヘッダが書き換えられてしまうかもしれないということを意味します。</p>
90 <p>early ディレクティブではリクエストパスの設定が解決される前に
91 処理されるので、メインサーバかバーチャルホストコンテキストでのみ、
92 早期ヘッダをセットできます。early ディレクティブはリクエストパスに
93 依存することはできませんので、<code><Directory></code> や
94 <code><Location></code> といったコンテキスト内では使用
96 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
98 <h2><a name="examples" id="examples">例</a></h2>
101 <li>リクエストヘッダ中の "TS" で始まるフィールドをすべて応答ヘッダに
103 <div class="example"><p><code>
109 リクエストを受け付けた時刻とリクエストを処理した時間を入れたヘッダ、
110 <code>MyHeader</code> を応答に追加します。このヘッダはクライアントが
111 サーバの負荷を直観的に知るためや、クライアント-サーバ間の
112 ボトルネックを調べるために使うことができます。
114 <div class="example"><p><code>
115 Header add MyHeader "%D %t"
118 <p>上記の設定では、以下のようなヘッダが応答に追加されることになります:</p>
120 <div class="example"><p><code>
121 MyHeader: D=3775428 t=991424704447256
128 <div class="example"><p><code>
129 Header add MyHeader "Hello Joe. It took %D microseconds for Apache to serve this request."
132 <p>以下のようなヘッダが応答に追加されることになります</p>
134 <div class="example"><p><code>
135 MyHeader: Hello Joe. It took D=3775428 microseconds for Apache to serve this request.
139 <li>リクエストに "MyRequestHeader" があるときに限り <code>MyHeader</code> を応答に
140 付けます。これは、クライアントの要求に応えてヘッダを作成するときに
141 役に立ちます。この例では <code class="module"><a href="../mod/mod_setenvif.html">mod_setenvif</a></code> モジュールが必要なことに
144 <div class="example"><p><code>
145 SetEnvIf MyRequestHeader value HAVE_MyRequestHeader<br />
146 Header add MyHeader "%D %t mytext" env=HAVE_MyRequestHeader
149 <p>もし HTTP リクエストに <code>MyRequestHeader: value</code> ヘッダが
150 あると、応答には以下のようなヘッダが付加されます。</p>
152 <div class="example"><p><code>
153 MyHeader: D=3775428 t=991424704447256 mytext
158 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
159 <div class="directive-section"><h2><a name="Header" id="Header">Header</a> <a name="header" id="header">ディレクティブ</a></h2>
160 <table class="directive">
161 <tr><th><a href="directive-dict.html#Description">説明:</a></th><td>HTTP 応答ヘッダの設定</td></tr>
162 <tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>Header [<var>condition</var>] set|append|add|unset|echo
163 <var>header</var> [<var>value</var>] [early|env=[!]<var>variable</var>]</code></td></tr>
164 <tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess</td></tr>
165 <tr><th><a href="directive-dict.html#Override">上書き:</a></th><td>FileInfo</td></tr>
166 <tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
167 <tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_headers</td></tr>
169 <p>このディレクティブは HTTP 応答ヘッダを置換、追加、削除できます。
170 ヘッダはコンテントハンドラや出力フィルタが実行された直後に実行され、
171 出て行くヘッダを変更できるようになっています。</p>
173 <p>オプションの <var>condition</var> は <code>onsuccess</code> か
174 <code>always</code> のどちらかを指定できます。これは内部ヘッダテーブルのどれを
175 操作するかを決定します。<code>onsuccess</code> は <code>2<var>xx</var></code>
176 ステータスコードの、<code>always</code> は全てのステータスコード
177 (<code>2<var>xx</var></code> を含む) の意味になります。
178 あるモジュールでセットされるヘッダをアンセットしたい場合は特に、
179 どのテーブルが影響を受けるかを実際に試したほうがよいでしょう。</p>
181 <p>行なう処理は二番目のの引数で決まります。
182 この引数には次の値を指定できます:</p>
185 <dt><code>set</code></dt>
186 <dd>応答ヘッダを設定します。同じ名前のヘッダが存在する場合はそれを
187 置き換えます。<em>value</em> にはフォーマット文字列を
190 <dt><code>append</code></dt>
191 <dd>応答ヘッダを既に存在する同じ名前のヘッダに追加します。
192 新しい値が既存のヘッダに追加されるときには、既存のヘッダの
193 後にコンマで区切られて追加されます。これはヘッダに複数の値を
194 指定するときの HTTP の標準の方法です。</dd>
196 <dt><code>add</code></dt>
197 <dd>ヘッダが既に存在しているときでさえも、応答ヘッダを
198 既存のヘッダに追加します。これにより、二つ (かそれ以上) の
199 ヘッダの名前が同じになることがあります。その結果、想定できない
200 ことが起こる可能性がありますので、一般的には <code>append</code> の方を
203 <dt><code>unset</code></dt>
204 <dd>もし指定された名前の応答ヘッダが存在していれば、削除されます。
205 同じ名前のヘッダが複数あるときは、すべて削除されます。
206 <var>value</var> をつけてはいけません。</dd>
208 <dt><code>echo</code></dt>
209 <dd>指定されたものと同じ名前のリクエストヘッダを応答ヘッダで
210 そのまま返します。<var>header</var> には正規表現も指定できます。
211 <var>value</var> をつけてはいけません。</dd>
214 <p>この引数の後にはヘッダ名 (<var>header</var>) が続きます。
215 ヘッダ名には最後にコロンを含めることもできますが、無くても構いません。
216 <code>set</code>, <code>append</code>, <code>add</code>,
217 <code>unset</code> では大文字小文字は
218 区別されません。echo の <em>header</em> 名は大文字小文字を区別し、
219 正規表現を指定することもできます。</p>
221 <p><code>add</code>, <code>append</code>,
222 <code>set</code> では <var>value</var> を三つ目の
223 引数として指定します。<var>value</var> に空白がある場合は二重引用符で
224 囲む必要があります。<var>value</var> は文字のみからなる文字列、
225 フォーマット指示子を含む文字列、もしくは両方からなる文字列を指定できます。
226 <var>value</var> は以下のフォーマット指示子をサポートします:</p>
228 <table class="bordered"><tr class="header"><th>フォーマット</th><th>解説</th></tr>
229 <tr><td><code>%%</code></td>
230 <td>パーセント記号</td></tr>
231 <tr class="odd"><td><code>%t</code></td>
233 Universal Coordinated Time での始まりの時刻 (Jan. 1, 1970) から経過した
234 時間をマイクロ秒として現したもの。値の最初には
235 <code>t=</code> が付加されます。</td></tr>
236 <tr><td><code>%D</code></td>
237 <td>リクエストを受け取った時刻と、ヘッダを送り出した
238 時間との差。これは、リクエストが存在していた期間を現します。
239 値の最初には <code>D=</code> が付加されます。</td></tr>
240 <tr class="odd"><td><code>%{FOOBAR}e</code></td>
241 <td><a href="../env.html">環境変数</a>
242 <code>FOOBAR</code> の値です。</td></tr>
243 <tr><td><code>%{FOOBAR}s</code></td>
244 <td><code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> が有効な場合、
245 <a href="mod_ssl.html#envvars">SSL 環境変数</a> <code>FOOBAR</code>
249 <div class="note"><h3>注</h3>
250 <p><code>%s</code> フォーマット指定子は 2.1 以降でのみ利用できます。
251 <code>SSLOptions +StdEnvVars</code> を有効にすることによるオーバーヘッドを
252 避けるため、<code>%e</code> の代わりとして使えます。
253 他の理由などがあって、どうしても <code>SSLOptions +StdEnvVars</code>
254 を有効にしなければならない場合は、<code>%e</code> のほうが
255 <code>%s</code> よりも処理効率は良いです。</p>
258 <p><code class="directive">Header</code> ディレクティブには追加の引数を持たせることが
259 できて、どういったアクションが行われたかの条件を指定したり、
260 <a href="#early">早期処理</a> を指定する <code>early</code> キーワードを
262 <code>env=...</code> 引数で指定された <a href="../env.html">環境変数</a> が存在する (もしくは <code>env=!...</code>
263 が指定されていて環境変数が存在しない) 場合は、<code class="directive">Header</code>
264 ディレクティブで指定された動作が行なわれます。そうでない場合は、
265 ディレクティブはそのリクエストには何もしません。</p>
267 <p><a href="#early">早期処理</a>モードの場合以外では、
268 <code class="directive">Header</code>
269 ディレクティブは応答がネットワークに送られる直前に
270 処理されます。これは、ヘッダフィルタにより追加されるヘッダを
271 除き、ほとんどのヘッダを設定したり上書きしたりすることが
275 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
276 <div class="directive-section"><h2><a name="RequestHeader" id="RequestHeader">RequestHeader</a> <a name="requestheader" id="requestheader">ディレクティブ</a></h2>
277 <table class="directive">
278 <tr><th><a href="directive-dict.html#Description">説明:</a></th><td>HTTP リクエストヘッダの設定</td></tr>
279 <tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>RequestHeader set|append|add|unset <var>header</var>
280 [<var>value</var>] [early|env=[!]<var>variable</var>]</code></td></tr>
281 <tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess</td></tr>
282 <tr><th><a href="directive-dict.html#Override">上書き:</a></th><td>FileInfo</td></tr>
283 <tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
284 <tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_headers</td></tr>
286 <p>このディレクティブは HTTP リクエストヘッダを置換、追加、削除できます。
287 ヘッダはコンテントハンドラが実行される直前に実行され、
288 入って来るヘッダを変更することが可能になっています。
289 行なう処理は第 1 引数により決まります。これには以下の値を指定
293 <dt><code>set</code></dt>
294 <dd>リクエストヘッダを設定します。同じ名前のヘッダが存在していると、
297 <dt><code>append</code></dt>
298 <dd>リクエストヘッダは、既に存在する同じ名前のヘッダに追加されます。
299 新しい値が既存のヘッダに追加されるときには、既存のヘッダの
300 後にコンマで区切られて追加されます。これはヘッダに複数の値を
301 指定するときの HTTP の標準の方法です。</dd>
303 <dt><code>add</code></dt>
304 <dd>ヘッダが既に存在しているときでさえも、リクエストヘッダを
305 既存のヘッダに追加します。これにより、二つ (かそれ以上) の
306 ヘッダの名前が同じになることがあります。その結果、想定できない
307 ことが起こる可能性がありますので、一般的には <code>append</code> の方を
310 <dt><code>unset</code></dt>
311 <dd>もし指定された名前のリクエストヘッダが存在していれば、削除されます。
312 同じ名前の複数のヘッダがあるときは、すべて削除されます。
313 <var>value</var> をつけてはいけません。</dd>
316 <p>この引数の後にはヘッダ名 (<em>header</em>) が続きます。
317 ヘッダ名には最後にコロンを含めることもできますが、無くても構いません。
318 大文字小文字は区別されません。<code>add</code>,
319 <code>append</code>, <code>set</code> の場合は、<em>value</em> が三つ目の
320 引数として指定されます。<em>value</em> に空白がある場合は二重引用符で
321 囲む必要があります。unset の場合は、<em>value</em> は指定しません。
322 <var>value</var> は文字列、フォーマット指定子、あるいは、その混合です。
323 使うことのできるフォーマット指定子は、<code class="directive"><a href="#header">Header</a></code> と同じですので、
326 <p><code class="directive">RequestHeader</code> ディレクティブは、
327 どういった条件下でアクションを行うかを指定する追加引数
328 あるいは、<a href="#early">早期処理</a> を指定する <code>early</code>
330 <code>env=<var>...</var></code> の引数で設定されている
331 <a href="../env.html">環境変数</a> が存在している
332 (あるいは <code>env=!<var>...</var></code> で指定された環境変数が
333 存在しない) 場合、<code class="directive">RequestHeader</code> ディレクティブは
334 有効になります。それ以外の場合、ディレクティブは効力を持ちません。</p>
336 <p><a href="#early">early</a> モードでない場合に限り、
337 <code class="directive">RequestHeader</code> ディレクティブは
338 fixup フェーズでリクエストがハンドラに扱われる直前に
339 処理されます。これにより、ブラウザや Apache の入力フィルタにより
340 生成されたヘッダを上書きしたり修正したりできるようになっています。</p>
344 <div class="bottomlang">
345 <p><span>言語: </span><a href="../en/mod/mod_headers.html" hreflang="en" rel="alternate" title="English"> en </a> |
346 <a href="../fr/mod/mod_headers.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
347 <a href="../ja/mod/mod_headers.html" title="Japanese"> ja </a> |
348 <a href="../ko/mod/mod_headers.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
349 </div><div id="footer">
350 <p class="apache">Copyright 2011 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
351 <p class="menu"><a href="../mod/">モジュール</a> | <a href="../mod/directives.html">ディレクティブ</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">用語</a> | <a href="../sitemap.html">サイトマップ</a></p></div>