Commit eaad1649 authored by Eric Covener's avatar Eric Covener
Browse files

Merge r1053523 from trunk:

PR50525: Header always ... doesn't really mean "always" in terms of what you 
can edit/merge/append/set since it only looks at r->err_headers_out and
the initial value may have lived in r->headers_out.





git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@1053524 13f79535-47bb-0310-9956-ffa450edef68
parent fd9848aa
Loading
Loading
Loading
Loading
+26 −12
Changes for docs/manual/mod/mod_headers.xml: 26 added lines, 12 removed lines.
Original line number Diff line number Diff line
@@ -298,18 +298,32 @@ headers</description>
    and output filters are run, allowing outgoing headers to be
    modified.</p>

    <p>By default, this directive only affects successful responses (responses
    in the <code>2<var>xx</var></code> range).  The optional <var>condition</var>
    can be either <code>onsuccess</code> (default) or <code>always</code> (all
    status codes, including successful responses).  A value of <code>always</code>
    may be needed to influence headers set by some internal modules even for
    successful responses, and is always needed to affect non-<code>2<var>xx</var></code> 
    responses such as redirects or client errors.</p>

    <note><title>CGI</title>
      <p>To manipulate headers set by CGI scripts, it is necessary to specify 
      <code>always</code> for the first parameter.</p>
    </note>
    <p> The optional <var>condition</var> argument determines which internal
    table of responses headers this directive will operate against.  Other
    components of the server may have stored their response headers in either
    the table that corresponds to <code>onsuccess</code> or the table that
    corresponds to <code>always</code>.  "Always" in this context refers to
    whether headers you add will be sent during both a successful and unsucessful 
    response, but if your action is a function of an existing header, you
    will have to read on for further complications.</p>

    <p> The default value of <code>onsuccess</code> may need to be changed to 
    <code>always</code> under the circumstances similar to those listed below
    Note also that repeating this directive with both conditions makes sense in
    some scenarios because <code>always</code> is not a superset of 
    <code>onsuccess</code> with respect to existing headers:</p>

    <ul>
       <li> You're adding a header to a non-success (non-2xx) response, such 
            as a redirect, in which case only the table corresponding to 
            <code>always</code> is used in the ultimate response.</li>
       <li> You're modifying or removing a header generated by a CGI script,
            in which case the CGI scripts are in the table corresponding to 
            <code>always</code> and not in the default table.</li>
       <li> You're modifying or removing a header generated by some piece of 
            the server but that header is not being found by the default 
            <code>onsuccess</code> condition.</li>
    </ul>

    <p>The action it performs is determined by the first
    argument (second argument if a <var>condition</var> is specified).