📄 mod_headers.html
字号:
</li>
</ol>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Header" id="Header">Header</a> <a name="header" id="header">指令</a></h2>
<table border="1" cellpadding="0" cellspacing="0" bordercolor="#AAAAAA" class="directive">
<tr><th><a href="directive-dict.html#Description">说明</a></th><td>配置HTTP应答头</td></tr>
<tr><th><a href="directive-dict.html#Syntax">语法</a></th><td><code>Header [<var>condition</var>] set|append|add|unset|echo <var>header</var> [<var>value</var>] [early|env=[!]<var>variable</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">作用域</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">覆盖项</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">状态</a></th><td>扩展(E)</td></tr>
<tr><th><a href="directive-dict.html#Module">模块</a></th><td>mod_headers</td></tr>
</table>
<p>这个指令可以替换、合并、删除HTTP应答头。应答头紧跟在内容处理器和输出过滤器完工之后生成,这时候才能对头进行修改。</p>
<p><var>condition</var>选项可以是<code>onsuccess</code>或<code>always</code> 。它决定了将对哪个内部头(internal header)表进行操作。<code>onsuccess</code>表示"<code>2<var>xx</var></code>"状态码,<code>always</code>表示所有状态码(包含"<code>2<var>xx</var></code>")。特别地,如果你想撤销由某个模块设置的头,你应当做做试验,以找到是那个表产生的影响。</p>
<p>该指令执行的动作是由第二个参数决定的。这个参数取值范围如下:</p>
<dl>
<dt><code>set</code></dt>
<dd>设置新的或修改已经存在的同名应答头。<var>value</var>可以是一个格式字符串。</dd>
<dt><code>append</code></dt>
<dd>向同名应答头添加新内容而不修改原来已经存在的旧内容。当向一个已经存在的头添加新值时,将用逗号与原来已经存在的旧值分开。这是向HTTP头赋以多个值的标准方法。</dd>
<dt><code>add</code></dt>
<dd>向应答中添加新的头而不修改原来已经存在的头(即使同名)。这将可能导致有两个或更多的应答头具有相同的名字,从而导致意想不到的后果,所以通常不使用这种方法而用<code>append</code>来代替它。</dd>
<dt><code>unset</code></dt>
<dd>去除应答中同名的头(若存在的话)。如果有多个头同名,则会被全部去除。<var>value</var>必须被省略。</dd>
<dt><code>echo</code></dt>
<dd>将请求中同名的头复制到应答中。<var>header</var>可以是一个<a class="glossarylink" href="../glossary.html#regex" title="see glossary">正则表达式</a>。<var>value</var>必须被省略。</dd>
</dl>
<p>这个参数后面必须要跟一个<var>header</var>名字(结尾的冒号可要可不要)。<code>set</code>, <code>append</code>, <code>add</code>, <code>unset</code>是大小写无关的。用于<code>echo</code>的<var>header</var>是大小写敏感的,并且可以是一个<a class="glossarylink" href="../glossary.html#regex" title="see glossary">正则表达式</a>。</p>
<p>对于<code>add</code>, <code>append</code>, <code>set</code>来说,<var>value</var>是第三个参数。如果<var>value</var>包含空格则必须用双引号(")括起来。<var>value</var>可以是一个普通字符串或包含格式说明符的字符串,<var>value</var>支持下列格式字符串:</p>
<table border="1" cellpadding="0" cellspacing="0" bordercolor="#AAAAAA" class="bordered">
<tr class="header"><th>格式</th><th>描述</th></tr>
<tr><td><code>%%</code></td><td>百分号(%)</td></tr>
<tr class="odd"><td><code>%t</code></td><td>接收到请求的微秒时间戳(相对于1970-1-1 00:00:00 UCT),外加一个"<code>t=</code>"前缀。</td></tr>
<tr><td><code>%D</code></td><td>从接收到请求到完成对该请求的处理并作出应答共花费了多少微秒,外加一个"<code>D=</code>"前缀。</td></tr>
<tr class="odd"><td><code>%{FOOBAR}e</code></td><td><a href="../env.html">环境变量</a><code>FOOBAR</code>的内容</td></tr>
<tr><td><code>%{FOOBAR}s</code></td><td><a href="mod_ssl.html#envvars">SSL环境变量</a><code>FOOBAR</code>的内容(如果启用了<code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>)</td></tr>
</table>
<div class="note"><h3>注意</h3>
<p>"<code>%s</code>"格式符仅在Apache 2.1及以后的版本中可用。它可以代替"<code>%e</code>"以避免"<code>SSLOptions +StdEnvVars</code>"带来的额外开销。如果因为别的原因必须开启"<code>SSLOptions +StdEnvVars</code>",那么"<code>%e</code>"将比"<code>%s</code>"更加合适。</p>
</div>
<p><code class="directive">Header</code>后面可以跟一个用于指定生效条件的额外参数(或者用<code>early</code>表示"<a href="#early">前处理</a>")。如果在"<code>env=<var>...</var></code>"参数中指定的<a href="../env.html">环境变量</a>存在(或用"<code>env=!<var>...</var></code>"表示不存在),那么<code class="directive">Header</code>指令指定的动作将会生效,否则将不会生效。</p>
<p>除非使用<a href="#early">early</a>模式,否则<code class="directive">Header</code>指令将在应答最后被发送到网络前处理。这意味着可以设置和改写绝大多数应答头,除了自己添加的应答头。</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="RequestHeader" id="RequestHeader">RequestHeader</a> <a name="requestheader" id="requestheader">指令</a></h2>
<table border="1" cellpadding="0" cellspacing="0" bordercolor="#AAAAAA" class="directive">
<tr><th><a href="directive-dict.html#Description">说明</a></th><td>配置HTTP请求头</td></tr>
<tr><th><a href="directive-dict.html#Syntax">语法</a></th><td><code>RequestHeader set|append|add|unset <var>header</var> [<var>value</var>] [early|env=[!]<var>variable</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">作用域</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">覆盖项</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">状态</a></th><td>扩展(E)</td></tr>
<tr><th><a href="directive-dict.html#Module">模块</a></th><td>mod_headers</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">兼容性</a></th><td>仅在 Apache 2.0 中有效</td></tr>
</table>
<p>这个指令可以替换、合并、删除HTTP应答头。请求头将会在内容处理器运行之前被修改。修改的动作由第一个参数决定,其取值范围如下:</p>
<dl>
<dt><code>set</code></dt>
<dd>设置新的或修改已经存在的同名请求头。</dd>
<dt><code>append</code></dt>
<dd>向同名请求头添加新内容而不修改原来已经存在的旧内容。当向一个已经存在的头添加新值时,将用逗号与原来已经存在的旧值分开。这是向HTTP头赋以多个值的标准方法。</dd>
<dt><code>add</code></dt>
<dd>向请求中添加新的头而不修改原来已经存在的头(即使同名)。这将可能导致有两个或更多的请求头具有相同的名字,从而导致意想不到的后果,所以通常不使用这种方法而用<code>append</code>来代替它。</dd>
<dt><code>unset</code></dt>
<dd>去除请求中同名的头(若存在的话)。如果有多个头同名,则会被全部去除。<var>value</var>必须被省略。</dd>
</dl>
<p>这些参数后面必须要跟一个<var>header</var>名(结尾的冒号可要可不要,且大小写无关)。对于<code>add</code>, <code>append</code>, <code>set</code>来说,<var>value</var>是第三个参数。如果<var>value</var>包含空格则必须用双引号(")括起来。对于<code>unset</code>来说则不需要<var>value</var>参数。<var>value</var>可以是一个普通字符串或包含格式说明符的字符串,格式字符串的用法与<code class="directive">Header</code>指令一样。</p>
<p><code class="directive">RequestHeader</code>后面可以跟一个用于指定生效条件的额外参数(或者用<code>early</code>表示"<a href="#early">前处理</a>")。如果在"<code>env=<var>...</var></code>"参数中指定的<a href="../env.html">环境变量</a>存在(或用"<code>env=!<var>...</var></code>"表示不存在),那么<code class="directive">RequestHeader</code>指令指定的动作将会生效,否则将不会生效。</p>
<p>除非使用<a href="#early">early</a>模式,否则<code class="directive">RequestHeader</code>将在请求被处理之前生效。这样,由浏览器和Apache输入过滤器产生的请求头都可以被该指令处理。</p>
</div>
</div>
<div id="footer">
<p class="apache">本文允许自由使用、分发、转载,但必须保留译者署名;详见:<a href="../translator_announcement.html#announcement">译者声明</a>。</p>
<p class="menu"><a href="../mod/index.html">模块索引</a> | <a href="../mod/directives.html">指令索引</a> | <a href="../faq/index.html">常见问题</a> | <a href="../glossary.html">词汇表</a> | <a href="../sitemap.html">站点导航</a></p></div>
</body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -