mirror of
				https://github.com/apache/httpd.git
				synced 2025-10-31 19:10:37 +03:00 
			
		
		
		
	little. PR: Obtained from: Submitted by: Reviewed by: git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@89387 13f79535-47bb-0310-9956-ffa450edef68
		
			
				
	
	
		
			298 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			298 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
 | |
| <HTML>
 | |
| <HEAD>
 | |
| <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><A HREF="#header">Header</A>
 | |
| </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:
 | |
| <OL>
 | |
| <LI>main server
 | |
| <LI>virtual host
 | |
| <LI><Directory> sections and .htaccess
 | |
| <LI><Location>
 | |
| <LI><Files>
 | |
| </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>
 | |
| <PRE>
 | |
|    Header echo ^TS*
 | |
| </PRE>
 | |
| 
 | |
| <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>
 | |
| <PRE>
 | |
|    Header add MyHeader "%D %t"
 | |
| </PRE>
 | |
| results in this header being added to the response:
 | |
| <PRE>
 | |
|    MyHeader: D=3775428 t=991424704447256
 | |
| </PRE>
 | |
| <LI>Say hello to Joe</LI>
 | |
| <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>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>
 | |
| <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>
 | |
| </OL>
 | |
| 
 | |
| <HR>
 | |
| 
 | |
| <H2><A 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>
 | |
| 
 | |
| <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><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><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><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.
 | |
| </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 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>
 | |
| 
 | |
| <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><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><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><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><STRONG>echo</STRONG><BR>
 | |
|   Request headers with this name are echoed back in the response headers.
 | |
|   <EM>header</EM> may be a regular expression. 
 | |
| </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>:
 | |
| <PRE>
 | |
| %t:	The time the request was received in Universal Coordinated Time
 | |
| 	since the epoch (Jan. 1, 1970) measured in microseconds. The
 | |
| 	value is preceeded 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 preceeded 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>
 |