mirror of
				https://github.com/apache/httpd.git
				synced 2025-11-03 17:53:20 +03:00 
			
		
		
		
	git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@91116 13f79535-47bb-0310-9956-ffa450edef68
		
			
				
	
	
		
			301 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			301 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 | 
						|
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 | 
						|
 | 
						|
<html xmlns="http://www.w3.org/1999/xhtml">
 | 
						|
  <head>
 | 
						|
    <meta name="generator" content="HTML Tidy, see www.w3.org" />
 | 
						|
 | 
						|
    <title>Apache module mod_headers</title>
 | 
						|
  </head>
 | 
						|
  <!-- Background white, links blue (unvisited), navy (visited), red (active) -->
 | 
						|
 | 
						|
  <body bgcolor="#FFFFFF" text="#000000" link="#0000FF"
 | 
						|
  vlink="#000080" alink="#FF0000">
 | 
						|
    <!--#include virtual="header.html" -->
 | 
						|
 | 
						|
    <h1 align="CENTER">Module mod_headers</h1>
 | 
						|
 | 
						|
    <p>This module provides for the customization of HTTP request
 | 
						|
    and response headers.</p>
 | 
						|
 | 
						|
    <p><a href="module-dict.html#Status"
 | 
						|
    rel="Help"><strong>Status:</strong></a> Extension<br />
 | 
						|
     <a href="module-dict.html#SourceFile"
 | 
						|
    rel="Help"><strong>Source File:</strong></a>
 | 
						|
    mod_headers.c<br />
 | 
						|
     <a href="module-dict.html#ModuleIdentifier"
 | 
						|
    rel="Help"><strong>Module Identifier:</strong></a>
 | 
						|
    headers_module<br />
 | 
						|
     <a href="module-dict.html#Compatibility"
 | 
						|
    rel="Help"><strong>Compatibility:</strong></a> Available in
 | 
						|
    Apache 1.2 and later. RequestHeader appeared in Apache 2.0.</p>
 | 
						|
 | 
						|
    <h2>Summary</h2>
 | 
						|
    This module provides directives to control and modify HTTP
 | 
						|
    request and response headers. Headers can be merged, replaced
 | 
						|
    or removed. 
 | 
						|
 | 
						|
    <h2>Directives</h2>
 | 
						|
 | 
						|
    <ul>
 | 
						|
      <li><a href="#requestheader">RequestHeader</a></li>
 | 
						|
 | 
						|
      <li><a href="#header">Header</a></li>
 | 
						|
    </ul>
 | 
						|
 | 
						|
    <h2>Order of Processing</h2>
 | 
						|
 | 
						|
    <p>The directives provided by mod_header can occur almost
 | 
						|
    anywhere within the server configuration. They are valid in the
 | 
						|
    main server config and virtual host sections, inside
 | 
						|
    <Directory>, <Location> and <Files> sections,
 | 
						|
    and within .htaccess files.</p>
 | 
						|
 | 
						|
    <p>The directives are processed in the following order:</p>
 | 
						|
 | 
						|
    <ol>
 | 
						|
      <li>main server</li>
 | 
						|
 | 
						|
      <li>virtual host</li>
 | 
						|
 | 
						|
      <li><Directory> sections and .htaccess</li>
 | 
						|
 | 
						|
      <li><Location></li>
 | 
						|
 | 
						|
      <li><Files></li>
 | 
						|
    </ol>
 | 
						|
 | 
						|
    <p>Order is important. These two headers have a different
 | 
						|
    effect if reversed:</p>
 | 
						|
 | 
						|
    <blockquote>
 | 
						|
      <code>RequestHeader append MirrorID "mirror 12"<br />
 | 
						|
       RequestHeader unset MirrorID</code>
 | 
						|
    </blockquote>
 | 
						|
 | 
						|
    <p>This way round, the MirrorID header is not set. If reversed,
 | 
						|
    the MirrorID header is set to "mirror 12".</p>
 | 
						|
 | 
						|
    <h2>Examples</h2>
 | 
						|
 | 
						|
    <ol>
 | 
						|
      <li>Copy all request headers that begin with "TS" to the
 | 
						|
      response headers:</li>
 | 
						|
 | 
						|
      <li style="list-style: none">
 | 
						|
<pre>
 | 
						|
   Header echo ^TS*
 | 
						|
</pre>
 | 
						|
      </li>
 | 
						|
 | 
						|
      <li>Add a header, MyHeader, to the response including a
 | 
						|
      timestamp for when the request was received and how long it
 | 
						|
      took to begin serving the request. This header can be used by
 | 
						|
      the client to intuit load on the server or in isolating
 | 
						|
      bottlenecks between the client and the server.</li>
 | 
						|
 | 
						|
      <li style="list-style: none">
 | 
						|
<pre>
 | 
						|
   Header add MyHeader "%D %t"
 | 
						|
</pre>
 | 
						|
        results in this header being added to the response: 
 | 
						|
<pre>
 | 
						|
   MyHeader: D=3775428 t=991424704447256
 | 
						|
</pre>
 | 
						|
      </li>
 | 
						|
 | 
						|
      <li>Say hello to Joe</li>
 | 
						|
 | 
						|
      <li style="list-style: none">
 | 
						|
<pre>
 | 
						|
   Header add MyHeader "Hello Joe. It took %D microseconds for Apache to serve this request."
 | 
						|
</pre>
 | 
						|
        results in this header being added to the response: 
 | 
						|
<pre>
 | 
						|
   MyHeader: Hello Joe. It took D=3775428 microseconds for Apache to serve this request.
 | 
						|
</pre>
 | 
						|
      </li>
 | 
						|
 | 
						|
      <li>Conditionally send MyHeader on the response if and only
 | 
						|
      if header "MyRequestHeader" is present on the request. This
 | 
						|
      is useful for constructing headers in response to some client
 | 
						|
      stimulus. Note that this example requires the services of the
 | 
						|
      mod_setenvif module.</li>
 | 
						|
 | 
						|
      <li style="list-style: none">
 | 
						|
<pre>
 | 
						|
   SetEnvIf MyRequestHeader value HAVE_MyRequestHeader<br />
 | 
						|
   Header add MyHeader "%D %t mytext" env=HAVE_MyRequestHeader
 | 
						|
</pre>
 | 
						|
        If the header "MyRequestHeader: value" is present on the
 | 
						|
        HTTP request, the response will contain the following
 | 
						|
        header: 
 | 
						|
<pre>
 | 
						|
   MyHeader: D=3775428 t=991424704447256 mytext
 | 
						|
</pre>
 | 
						|
      </li>
 | 
						|
    </ol>
 | 
						|
    <hr />
 | 
						|
 | 
						|
    <h2><a id="requestheader"
 | 
						|
    name="requestheader">RequestHeader</a> directive</h2>
 | 
						|
    <a href="directive-dict.html#Syntax"
 | 
						|
    rel="Help"><strong>Syntax:</strong></a> RequestHeader
 | 
						|
    set|append|add <em>header</em> <em>value</em><br />
 | 
						|
     <a href="directive-dict.html#Syntax"
 | 
						|
    rel="Help"><strong>Syntax:</strong></a> RequestHeader unset
 | 
						|
    <em>header</em><br />
 | 
						|
     <a href="directive-dict.html#Context"
 | 
						|
    rel="Help"><strong>Context:</strong></a> server config, virtual
 | 
						|
    host, access.conf, .htaccess<br />
 | 
						|
     <a href="directive-dict.html#Override"
 | 
						|
    rel="Help"><strong>Override:</strong></a> FileInfo<br />
 | 
						|
     <a href="directive-dict.html#Status"
 | 
						|
    rel="Help"><strong>Status:</strong></a> Extension<br />
 | 
						|
     <a href="directive-dict.html#Module"
 | 
						|
    rel="Help"><strong>Module:</strong></a> mod_header 
 | 
						|
 | 
						|
    <p>This directive can replace, merge or remove HTTP request
 | 
						|
    headers. The header is modified just before the content handler
 | 
						|
    is run, allowing incoming headers to be modified. The action it
 | 
						|
    performs is determined by the first argument. This can be one
 | 
						|
    of the following values:</p>
 | 
						|
 | 
						|
    <ul>
 | 
						|
      <li><strong>set</strong><br />
 | 
						|
       The request header is set, replacing any previous header
 | 
						|
      with this name</li>
 | 
						|
 | 
						|
      <li><strong>append</strong><br />
 | 
						|
       The request header is appended to any existing header of the
 | 
						|
      same name. When a new value is merged onto an existing header
 | 
						|
      it is separated from the existing header with a comma. This
 | 
						|
      is the HTTP standard way of giving a header multiple
 | 
						|
      values.</li>
 | 
						|
 | 
						|
      <li><strong>add</strong><br />
 | 
						|
       The request header is added to the existing set of headers,
 | 
						|
      even if this header already exists. This can result in two
 | 
						|
      (or more) headers having the same name. This can lead to
 | 
						|
      unforeseen consequences, and in general "append" should be
 | 
						|
      used instead.</li>
 | 
						|
 | 
						|
      <li><strong>unset</strong><br />
 | 
						|
       The request header of this name is removed, if it exists. If
 | 
						|
      there are multiple headers of the same name, all will be
 | 
						|
      removed.</li>
 | 
						|
    </ul>
 | 
						|
 | 
						|
    <p>This argument is followed by a header name, which can
 | 
						|
    include the final colon, but it is not required. Case is
 | 
						|
    ignored. For <code>add</code>, <code>append</code> and
 | 
						|
    <code>set</code> a value is given as the third argument. If
 | 
						|
    this value contains spaces, it should be surrounded by double
 | 
						|
    quotes. For unset, no value should be given.</p>
 | 
						|
 | 
						|
    <p>The <code>RequestHeader</code> directive is processed just
 | 
						|
    before the request is run by its handler in the fixup phase.
 | 
						|
    This should allow headers generated by the browser, or by
 | 
						|
    Apache input filters to be overridden or modified.</p>
 | 
						|
    <hr />
 | 
						|
 | 
						|
    <h2><a id="header" name="header">Header</a> directive</h2>
 | 
						|
    <a href="directive-dict.html#Syntax"
 | 
						|
    rel="Help"><strong>Syntax:</strong></a> Header set|append|add
 | 
						|
    <em>header</em> <em>value</em>
 | 
						|
    <em>[env=[!]environment-variable]</em><br />
 | 
						|
     <a href="directive-dict.html#Syntax"
 | 
						|
    rel="Help"><strong>Syntax:</strong></a> Header unset
 | 
						|
    <em>header</em><br />
 | 
						|
     <a href="directive-dict.html#Syntax"
 | 
						|
    rel="Help"><strong>Syntax:</strong></a> Header echo
 | 
						|
    <em>header</em><br />
 | 
						|
     <a href="directive-dict.html#Context"
 | 
						|
    rel="Help"><strong>Context:</strong></a> server config, virtual
 | 
						|
    host, access.conf, .htaccess<br />
 | 
						|
     <a href="directive-dict.html#Override"
 | 
						|
    rel="Help"><strong>Override:</strong></a> FileInfo<br />
 | 
						|
     <a href="directive-dict.html#Status"
 | 
						|
    rel="Help"><strong>Status:</strong></a> Extension<br />
 | 
						|
     <a href="directive-dict.html#Module"
 | 
						|
    rel="Help"><strong>Module:</strong></a> mod_header 
 | 
						|
 | 
						|
    <p>This directive can replace, merge or remove HTTP response
 | 
						|
    headers. The header is modified just after the content handler
 | 
						|
    and output filters are run, allowing outgoing headers to be
 | 
						|
    modified. The action it performs is determined by the first
 | 
						|
    argument. This can be one of the following values:</p>
 | 
						|
 | 
						|
    <ul>
 | 
						|
      <li><strong>set</strong><br />
 | 
						|
       The response header is set, replacing any previous header
 | 
						|
      with this name. The <em>value</em> may be a format
 | 
						|
      string.</li>
 | 
						|
 | 
						|
      <li><strong>append</strong><br />
 | 
						|
       The response header is appended to any existing header of
 | 
						|
      the same name. When a new value is merged onto an existing
 | 
						|
      header it is separated from the existing header with a comma.
 | 
						|
      This is the HTTP standard way of giving a header multiple
 | 
						|
      values.</li>
 | 
						|
 | 
						|
      <li><strong>add</strong><br />
 | 
						|
       The response header is added to the existing set of headers,
 | 
						|
      even if this header already exists. This can result in two
 | 
						|
      (or more) headers having the same name. This can lead to
 | 
						|
      unforeseen consequences, and in general "append" should be
 | 
						|
      used instead.</li>
 | 
						|
 | 
						|
      <li><strong>unset</strong><br />
 | 
						|
       The response header of this name is removed, if it exists.
 | 
						|
      If there are multiple headers of the same name, all will be
 | 
						|
      removed.</li>
 | 
						|
 | 
						|
      <li><strong>echo</strong><br />
 | 
						|
       Request headers with this name are echoed back in the
 | 
						|
      response headers. <em>header</em> may be a regular
 | 
						|
      expression.</li>
 | 
						|
    </ul>
 | 
						|
 | 
						|
    <p>This argument is followed by a <em>header</em> name, which
 | 
						|
    can include the final colon, but it is not required. Case is
 | 
						|
    ignored for set, append, add and unset. The <em>header</em>
 | 
						|
    name for echo is case sensitive and may be a regular
 | 
						|
    expression.</p>
 | 
						|
 | 
						|
    <p>For <code>add</code>, <code>append</code> and
 | 
						|
    <code>set</code> a <em>value</em> is specified as the third
 | 
						|
    argument. If <em>value</em> contains spaces, it should be
 | 
						|
    surrounded by doublequotes. <em>value</em> may be a character
 | 
						|
    string, a string containing format specifiers or a combination
 | 
						|
    of both. The following format specifiers are supported in
 | 
						|
    <em>value</em>:</p>
 | 
						|
<pre>
 | 
						|
%t: The time the request was received in Universal Coordinated Time
 | 
						|
    since the epoch (Jan. 1, 1970) measured in microseconds. The
 | 
						|
    value is preceded by "t=".
 | 
						|
%D:     The time from when the request was received to the time the
 | 
						|
        headers are sent on the wire. This is a measure of the
 | 
						|
    duration of the request. The value is preceded by "D=".
 | 
						|
</pre>
 | 
						|
 | 
						|
    <p>When the <code>Header</code> directive is used with the
 | 
						|
    <code>add</code>, <code>append</code>, or <code>set</code>
 | 
						|
    argument, a fourth argument may be used to specify conditions
 | 
						|
    under which the action will be taken. If the <a
 | 
						|
    href="../env.html">environment variable</a> specified in the
 | 
						|
    <code>env=...</code> argument exists (or if the environment
 | 
						|
    variable does not exist and <code>env=!...</code> is specified)
 | 
						|
    then the action specified by the <code>Header</code> directive
 | 
						|
    will take effect. Otherwise, the directive will have no effect
 | 
						|
    on the request.</p>
 | 
						|
 | 
						|
    <p>The Header directives are processed just before the response
 | 
						|
    is sent to the network. These means that it is possible to set
 | 
						|
    and/or override most headers, except for those headers added by
 | 
						|
    the header filter.</p>
 | 
						|
    <!--#include virtual="footer.html" -->
 | 
						|
  </body>
 | 
						|
</html>
 | 
						|
 |