]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_headers.xml.ja
rebuild docs
[apache] / docs / manual / mod / mod_headers.xml.ja
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?>
4 <!-- English Revision: 151408:1587097 (outdated) -->
5
6 <!--
7  Licensed to the Apache Software Foundation (ASF) under one or more
8  contributor license agreements.  See the NOTICE file distributed with
9  this work for additional information regarding copyright ownership.
10  The ASF licenses this file to You under the Apache License, Version 2.0
11  (the "License"); you may not use this file except in compliance with
12  the License.  You may obtain a copy of the License at
13
14      http://www.apache.org/licenses/LICENSE-2.0
15
16  Unless required by applicable law or agreed to in writing, software
17  distributed under the License is distributed on an "AS IS" BASIS,
18  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19  See the License for the specific language governing permissions and
20  limitations under the License.
21 -->
22
23 <modulesynopsis metafile="mod_headers.xml.meta">
24
25 <name>mod_headers</name>
26 <description>HTTP リクエストのヘッダと応答のヘッダのカスタマイズ</description>
27 <status>Extension</status>
28 <sourcefile>mod_headers.c</sourcefile>
29 <identifier>headers_module</identifier>
30 <compatibility><directive module="mod_headers">RequestHeader</directive> 
31 は Apache 2.0 以降のみで使用可能</compatibility>
32
33 <summary>
34     <p>このモジュールは HTTP のリクエストヘッダと応答ヘッダを制御し、
35     変更するためのディレクティブを提供します。ヘッダを追加したり、
36     置き換えたり、削除したりすることができます。</p>
37 </summary>
38
39 <section id="order"><title>処理の順番</title>
40
41     <p><module>mod_headers</module> のディレクティブはサーバ設定のほぼどこにでも
42     書くことができ、影響する範囲を<a
43     href="../sections.html">設定用セクション</a>で囲むことで限定する
44     ことができます。</p>
45
46     <p>処理の順番は重要で、設定ファイル中の順番と、<a
47     href="../sections.html">設定用セクション</a>内の位置との両方に
48     影響されます。以下の二つのヘッダは順番が逆になると
49     違う結果になります:</p>
50
51     <example>
52       RequestHeader append MirrorID "mirror 12"<br />
53       RequestHeader unset MirrorID
54     </example>
55
56     <p>この順番の場合は、<code>MirrorID</code> ヘッダは設定されません。
57     逆になっていると、MirrorID ヘッダは "mirror 12" に設定されます。</p>
58 </section>
59
60 <section id="early"><title>早期処理、後期処理</title>
61     <p><module>mod_headers</module> では、リクエストの早期か後期かの
62     どちらで適用するかを選べます。通常は後期モードで、
63     コンテンツ生成が実行される直前にリクエストヘッダがセットされ、
64     レスポンスとして送出される直前にレスポンスヘッダがセットされます。
65     運用中のサーバでは必ず後期モードを使ってください。</p>
66
67     <p>早期モードは開発者向けのテスト/デバッグ用に設計されています。
68     <code>early</code> キーワード指定されたディレクティブによって、
69     リクエスト処理の開始地点になります。
70     つまり、異なるリクエストを試したりテストケースをセットアップするのに
71     活用できる一方で、レスポンスを生成する前に他のモジュールによって
72     ヘッダが書き換えられてしまうかもしれないということを意味します。</p>
73
74     <p>early ディレクティブではリクエストパスの設定が解決される前に
75     処理されるので、メインサーバかバーチャルホストコンテキストでのみ、
76     早期ヘッダをセットできます。early ディレクティブはリクエストパスに
77     依存することはできませんので、<code>&lt;Directory&gt;</code> や
78     <code>&lt;Location&gt;</code> といったコンテキスト内では使用
79     できません。</p>
80 </section>
81
82 <section id="examples"><title>例</title>
83
84     <ol>
85       <li>リクエストヘッダ中の "TS" で始まるフィールドをすべて応答ヘッダに
86         コピーします:
87         <example>
88           Header echo ^TS
89         </example>
90       </li>
91
92       <li>
93         リクエストを受け付けた時刻とリクエストを処理した時間を入れたヘッダ、
94         <code>MyHeader</code> を応答に追加します。このヘッダはクライアントが
95         サーバの負荷を直観的に知るためや、クライアント-サーバ間の
96         ボトルネックを調べるために使うことができます。
97
98         <example>
99            Header add MyHeader "%D %t"
100         </example>
101
102         <p>上記の設定では、以下のようなヘッダが応答に追加されることになります:</p>
103
104         <example>
105            MyHeader: D=3775428 t=991424704447256
106         </example>
107       </li>
108
109       <li>
110         Joe にあいさつをします:
111
112         <example>
113            Header add MyHeader "Hello Joe. It took %D microseconds for Apache to serve this request."
114         </example>
115
116         <p>以下のようなヘッダが応答に追加されることになります</p>
117
118         <example>
119            MyHeader: Hello Joe. It took D=3775428 microseconds for Apache to serve this request.
120         </example>
121       </li>
122
123       <li>リクエストに "MyRequestHeader" があるときに限り <code>MyHeader</code> を応答に
124       付けます。これは、クライアントの要求に応えてヘッダを作成するときに
125       役に立ちます。この例では <module>mod_setenvif</module> モジュールが必要なことに
126       注意してください。
127
128         <example>
129            SetEnvIf MyRequestHeader value HAVE_MyRequestHeader<br />
130            Header add MyHeader "%D %t mytext" env=HAVE_MyRequestHeader
131         </example>
132
133         <p>もし HTTP リクエストに <code>MyRequestHeader: value</code> ヘッダが
134         あると、応答には以下のようなヘッダが付加されます。</p>
135
136         <example>
137            MyHeader: D=3775428 t=991424704447256 mytext
138         </example>
139       </li>
140     </ol>
141 </section>
142
143 <directivesynopsis>
144 <name>RequestHeader</name>
145 <description>HTTP リクエストヘッダの設定</description>
146 <syntax>RequestHeader set|append|add|unset <var>header</var>
147 [<var>value</var>] [early|env=[!]<var>variable</var>]</syntax>
148 <contextlist><context>server config</context><context>virtual host</context>
149 <context>directory</context><context>.htaccess</context></contextlist>
150 <override>FileInfo</override>
151
152 <usage>
153     <p>このディレクティブは HTTP リクエストヘッダを置換、追加、削除できます。
154     ヘッダはコンテントハンドラが実行される直前に実行され、
155     入って来るヘッダを変更することが可能になっています。
156     行なう処理は第 1 引数により決まります。これには以下の値を指定
157     することができます:</p>
158
159     <dl>
160     <dt><code>set</code></dt>
161     <dd>リクエストヘッダを設定します。同じ名前のヘッダが存在していると、
162     それを置き換えます。</dd>
163
164     <dt><code>append</code></dt>
165     <dd>リクエストヘッダは、既に存在する同じ名前のヘッダに追加されます。
166     新しい値が既存のヘッダに追加されるときには、既存のヘッダの
167     後にコンマで区切られて追加されます。これはヘッダに複数の値を
168     指定するときの HTTP の標準の方法です。</dd>
169
170     <dt><code>add</code></dt>
171     <dd>ヘッダが既に存在しているときでさえも、リクエストヘッダを
172     既存のヘッダに追加します。これにより、二つ (かそれ以上) の
173     ヘッダの名前が同じになることがあります。その結果、想定できない
174     ことが起こる可能性がありますので、一般的には <code>append</code> の方を
175     使う方が良いでしょう。</dd>
176
177     <dt><code>unset</code></dt>
178     <dd>もし指定された名前のリクエストヘッダが存在していれば、削除されます。
179     同じ名前の複数のヘッダがあるときは、すべて削除されます。
180     <var>value</var> をつけてはいけません。</dd>
181     </dl>
182
183     <p>この引数の後にはヘッダ名 (<em>header</em>) が続きます。
184     ヘッダ名には最後にコロンを含めることもできますが、無くても構いません。
185     大文字小文字は区別されません。<code>add</code>,
186     <code>append</code>, <code>set</code> の場合は、<em>value</em> が三つ目の
187     引数として指定されます。<em>value</em> に空白がある場合は二重引用符で
188     囲む必要があります。unset の場合は、<em>value</em> は指定しません。
189     <var>value</var> は文字列、フォーマット指定子、あるいは、その混合です。
190     使うことのできるフォーマット指定子は、<directive
191     module="mod_headers">Header</directive> と同じですので、
192     詳細はそちらをご覧ください。</p>
193
194     <p><directive>RequestHeader</directive> ディレクティブは、
195     どういった条件下でアクションを行うかを指定する追加引数
196     あるいは、<a href="#early">早期処理</a> を指定する <code>early</code> 
197     キーワードを設定することができます。
198     <code>env=<var>...</var></code> の引数で設定されている
199     <a href="../env.html">環境変数</a> が存在している
200     (あるいは <code>env=!<var>...</var></code> で指定された環境変数が
201     存在しない) 場合、<directive>RequestHeader</directive> ディレクティブは
202     有効になります。それ以外の場合、ディレクティブは効力を持ちません。</p>
203
204     <p><a href="#early">early</a> モードでない場合に限り、
205     <directive>RequestHeader</directive> ディレクティブは
206     fixup フェーズでリクエストがハンドラに扱われる直前に
207     処理されます。これにより、ブラウザや Apache の入力フィルタにより
208     生成されたヘッダを上書きしたり修正したりできるようになっています。</p>
209 </usage>
210 </directivesynopsis>
211
212 <directivesynopsis>
213 <name>Header</name>
214 <description>HTTP 応答ヘッダの設定</description>
215 <syntax>Header [<var>condition</var>] set|append|add|unset|echo
216 <var>header</var> [<var>value</var>] [early|env=[!]<var>variable</var>]</syntax>
217 <contextlist><context>server config</context><context>virtual host</context>
218 <context>directory</context><context>.htaccess</context></contextlist>
219 <override>FileInfo</override>
220 <usage>
221     <p>このディレクティブは HTTP 応答ヘッダを置換、追加、削除できます。
222     ヘッダはコンテントハンドラや出力フィルタが実行された直後に実行され、
223     出て行くヘッダを変更できるようになっています。</p>
224
225     <p>オプションの <var>condition</var> は <code>onsuccess</code> か
226     <code>always</code> のどちらかを指定できます。これは内部ヘッダテーブルのどれを
227     操作するかを決定します。<code>onsuccess</code> は <code>2<var>xx</var></code>
228     ステータスコードの、<code>always</code> は全てのステータスコード
229     (<code>2<var>xx</var></code> を含む) の意味になります。
230     あるモジュールでセットされるヘッダをアンセットしたい場合は特に、
231     どのテーブルが影響を受けるかを実際に試したほうがよいでしょう。</p>
232
233     <p>行なう処理は二番目のの引数で決まります。
234     この引数には次の値を指定できます:</p>
235
236     <dl>
237     <dt><code>set</code></dt>
238     <dd>応答ヘッダを設定します。同じ名前のヘッダが存在する場合はそれを
239     置き換えます。<em>value</em> にはフォーマット文字列を
240     指定することもできます。</dd>
241
242     <dt><code>append</code></dt>
243     <dd>応答ヘッダを既に存在する同じ名前のヘッダに追加します。
244     新しい値が既存のヘッダに追加されるときには、既存のヘッダの
245     後にコンマで区切られて追加されます。これはヘッダに複数の値を
246     指定するときの HTTP の標準の方法です。</dd>
247
248     <dt><code>add</code></dt>
249     <dd>ヘッダが既に存在しているときでさえも、応答ヘッダを
250     既存のヘッダに追加します。これにより、二つ (かそれ以上) の
251     ヘッダの名前が同じになることがあります。その結果、想定できない
252     ことが起こる可能性がありますので、一般的には <code>append</code> の方を
253     使う方が良いでしょう。</dd>
254
255     <dt><code>unset</code></dt>
256     <dd>もし指定された名前の応答ヘッダが存在していれば、削除されます。
257     同じ名前のヘッダが複数あるときは、すべて削除されます。
258     <var>value</var> をつけてはいけません。</dd>
259
260     <dt><code>echo</code></dt>
261     <dd>指定されたものと同じ名前のリクエストヘッダを応答ヘッダで
262     そのまま返します。<var>header</var> には正規表現も指定できます。
263     <var>value</var> をつけてはいけません。</dd>
264     </dl>
265
266     <p>この引数の後にはヘッダ名 (<var>header</var>) が続きます。
267     ヘッダ名には最後にコロンを含めることもできますが、無くても構いません。
268     <code>set</code>, <code>append</code>, <code>add</code>,
269     <code>unset</code> では大文字小文字は
270     区別されません。echo の <em>header</em> 名は大文字小文字を区別し、
271     正規表現を指定することもできます。</p>
272
273     <p><code>add</code>, <code>append</code>,
274     <code>set</code> では <var>value</var> を三つ目の
275     引数として指定します。<var>value</var> に空白がある場合は二重引用符で
276     囲む必要があります。<var>value</var> は文字のみからなる文字列、
277     フォーマット指示子を含む文字列、もしくは両方からなる文字列を指定できます。
278     <var>value</var> は以下のフォーマット指示子をサポートします:</p>
279
280     <table border="1" style="zebra">
281     <columnspec><column width=".25"/><column width=".75"/></columnspec>
282     <tr><th>フォーマット</th><th>解説</th></tr>
283     <tr><td><code>%%</code></td>
284         <td>パーセント記号</td></tr>
285
286     <tr><td><code>%t</code></td>
287         <td>リクエストを受け取った時刻を、
288         Universal Coordinated Time での始まりの時刻 (Jan. 1, 1970) から経過した
289         時間をマイクロ秒として現したもの。値の最初には 
290         <code>t=</code> が付加されます。</td></tr>
291
292     <tr><td><code>%D</code></td>
293         <td>リクエストを受け取った時刻と、ヘッダを送り出した
294         時間との差。これは、リクエストが存在していた期間を現します。
295         値の最初には <code>D=</code> が付加されます。</td></tr>
296
297     <tr><td><code>%{FOOBAR}e</code></td>
298         <td><a href="../env.html">環境変数</a>
299         <code>FOOBAR</code> の値です。</td></tr>
300
301     <tr><td><code>%{FOOBAR}s</code></td>
302         <td><module>mod_ssl</module> が有効な場合、
303         <a href="mod_ssl.html#envvars">SSL 環境変数</a> <code>FOOBAR</code>
304         の内容</td></tr>
305
306     </table>
307
308     <note><title>注</title>
309       <p><code>%s</code> フォーマット指定子は 2.1 以降でのみ利用できます。
310       <code>SSLOptions +StdEnvVars</code> を有効にすることによるオーバーヘッドを
311       避けるため、<code>%e</code> の代わりとして使えます。
312       他の理由などがあって、どうしても <code>SSLOptions +StdEnvVars</code> 
313       を有効にしなければならない場合は、<code>%e</code> のほうが
314       <code>%s</code> よりも処理効率は良いです。</p>
315     </note> 
316
317     <p><directive>Header</directive> ディレクティブには追加の引数を持たせることが
318     できて、どういったアクションが行われたかの条件を指定したり、
319     <a href="#early">早期処理</a> を指定する <code>early</code> キーワードを
320     指定できます。
321     <code>env=...</code> 引数で指定された <a
322     href="../env.html">環境変数</a> が存在する (もしくは <code>env=!...</code>
323     が指定されていて環境変数が存在しない) 場合は、<directive>Header</directive>
324     ディレクティブで指定された動作が行なわれます。そうでない場合は、
325     ディレクティブはそのリクエストには何もしません。</p>
326
327     <p><a href="#early">早期処理</a>モードの場合以外では、
328     <directive>Header</directive>
329     ディレクティブは応答がネットワークに送られる直前に
330     処理されます。これは、ヘッダフィルタにより追加されるヘッダを
331     除き、ほとんどのヘッダを設定したり上書きしたりすることが
332     可能、ということです。</p>
333 </usage>
334 </directivesynopsis>
335
336 </modulesynopsis>
337