Ignore:
Timestamp:
Nov 13, 2008, 10:17:06 AM (11 years ago)
Author:
julian.reschke@…
Message:

Rewrite header ABNFs to spell out whitespace rules, factor out value format definitions. (related to #36)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • draft-ietf-httpbis/latest/p6-cache.html

    r345 r364  
    485485         <tr>
    486486            <td class="header left"></td>
    487             <td class="header right">November 11, 2008</td>
     487            <td class="header right">November 13, 2008</td>
    488488         </tr>
    489489      </table>
     
    717717      </p>
    718718      <h1 id="rfc.section.2"><a href="#rfc.section.2">2.</a>&nbsp;<a id="notation" href="#notation">Notational Conventions and Generic Grammar</a></h1>
    719       <p id="rfc.section.2.p.1">This specification uses the ABNF syntax defined in <a href="p1-messaging.html#notation.abnf" title="Augmented BNF">Section 2.1</a> of <a href="#Part1" id="rfc.xref.Part1.1"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a> and the core rules defined in <a href="p1-messaging.html#basic.rules" title="Basic Rules">Section 2.2</a> of <a href="#Part1" id="rfc.xref.Part1.2"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>: <span class="comment">[abnf.dep: ABNF syntax and basic rules will be adopted from RFC 5234, see &lt;<a href="http://ietf.org/wg/httpbis/trac/ticket/36">http://ietf.org/wg/httpbis/trac/ticket/36</a>&gt;.]</span>
     719      <p id="rfc.section.2.p.1">This specification uses the ABNF syntax defined in <a href="p1-messaging.html#notation.abnf" title="ABNF Extensions">Section 2.1</a> of <a href="#Part1" id="rfc.xref.Part1.1"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a> and the core rules defined in <a href="p1-messaging.html#basic.rules" title="Basic Rules">Section 2.2</a> of <a href="#Part1" id="rfc.xref.Part1.2"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>: <span class="comment">[abnf.dep: ABNF syntax and basic rules will be adopted from RFC 5234, see &lt;<a href="http://ietf.org/wg/httpbis/trac/ticket/36">http://ietf.org/wg/httpbis/trac/ticket/36</a>&gt;.]</span>
    720720      </p>
    721721      <div id="rfc.figure.u.1"></div><pre class="inline">  <a href="#notation" class="smpl">DIGIT</a>         = &lt;DIGIT, defined in <a href="#Part1" id="rfc.xref.Part1.3"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#basic.rules" title="Basic Rules">Section 2.2</a>&gt;
     
    724724</pre><div id="rfc.figure.u.2"></div><pre class="inline">  <a href="#notation" class="smpl">quoted-string</a> = &lt;quoted-string, defined in <a href="#Part1" id="rfc.xref.Part1.6"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#basic.rules" title="Basic Rules">Section 2.2</a>&gt;
    725725  <a href="#notation" class="smpl">token</a>         = &lt;token, defined in <a href="#Part1" id="rfc.xref.Part1.7"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#basic.rules" title="Basic Rules">Section 2.2</a>&gt;
     726  <a href="#notation" class="smpl">BWS</a>           = &lt;BWS, defined in <a href="#Part1" id="rfc.xref.Part1.8"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#basic.rules" title="Basic Rules">Section 2.2</a>&gt;
     727  <a href="#notation" class="smpl">OWS</a>           = &lt;OWS, defined in <a href="#Part1" id="rfc.xref.Part1.9"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#basic.rules" title="Basic Rules">Section 2.2</a>&gt;
     728  <a href="#notation" class="smpl">RWS</a>           = &lt;RWS, defined in <a href="#Part1" id="rfc.xref.Part1.10"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#basic.rules" title="Basic Rules">Section 2.2</a>&gt;
    726729</pre><div id="abnf.dependencies">
    727730         <p id="rfc.section.2.p.4">          The ABNF rules below are defined in other parts:</p>
    728731      </div>
    729       <div id="rfc.figure.u.3"></div><pre class="inline">  <a href="#abnf.dependencies" class="smpl">field-name</a>    = &lt;field-name, defined in <a href="#Part1" id="rfc.xref.Part1.8"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#message.headers" title="Message Headers">Section 4.2</a>&gt;
    730   <a href="#abnf.dependencies" class="smpl">HTTP-date</a>     = &lt;HTTP-date, defined in <a href="#Part1" id="rfc.xref.Part1.9"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#full.date" title="Full Date">Section 3.3.1</a>&gt;
    731   <a href="#abnf.dependencies" class="smpl">port</a>          = &lt;port, defined in <a href="#Part1" id="rfc.xref.Part1.10"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#general.syntax" title="General Syntax">Section 3.2.1</a>&gt;
    732   <a href="#abnf.dependencies" class="smpl">pseudonym</a>     = &lt;pseudonym, defined in <a href="#Part1" id="rfc.xref.Part1.11"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#header.via" title="Via">Section 8.9</a>&gt;
    733   <a href="#abnf.dependencies" class="smpl">uri-host</a>      = &lt;uri-host, defined in <a href="#Part1" id="rfc.xref.Part1.12"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#general.syntax" title="General Syntax">Section 3.2.1</a>&gt;
     732      <div id="rfc.figure.u.3"></div><pre class="inline">  <a href="#abnf.dependencies" class="smpl">field-name</a>    = &lt;field-name, defined in <a href="#Part1" id="rfc.xref.Part1.11"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#message.headers" title="Message Headers">Section 4.2</a>&gt;
     733  <a href="#abnf.dependencies" class="smpl">HTTP-date</a>     = &lt;HTTP-date, defined in <a href="#Part1" id="rfc.xref.Part1.12"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#full.date" title="Full Date">Section 3.3.1</a>&gt;
     734  <a href="#abnf.dependencies" class="smpl">port</a>          = &lt;port, defined in <a href="#Part1" id="rfc.xref.Part1.13"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#general.syntax" title="General Syntax">Section 3.2.1</a>&gt;
     735  <a href="#abnf.dependencies" class="smpl">pseudonym</a>     = &lt;pseudonym, defined in <a href="#Part1" id="rfc.xref.Part1.14"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#header.via" title="Via">Section 8.9</a>&gt;
     736  <a href="#abnf.dependencies" class="smpl">uri-host</a>      = &lt;uri-host, defined in <a href="#Part1" id="rfc.xref.Part1.15"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#general.syntax" title="General Syntax">Section 3.2.1</a>&gt;
    734737</pre><h1 id="rfc.section.3"><a href="#rfc.section.3">3.</a>&nbsp;<a id="caching.overview" href="#caching.overview">Overview</a></h1>
    735738      <h2 id="rfc.section.3.1"><a href="#rfc.section.3.1">3.1</a>&nbsp;<a id="cache.correctness" href="#cache.correctness">Cache Correctness</a></h2>
     
    872875      </p>
    873876      <p id="rfc.section.4.3.p.3">HTTP/1.1 requires origin servers to send a Date header, if possible, with every response, giving the time at which the response
    874          was generated (see <a href="p1-messaging.html#header.date" title="Date">Section 8.3</a> of <a href="#Part1" id="rfc.xref.Part1.13"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>). We use the term "date_value" to denote the value of the Date header, in a form appropriate for arithmetic operations.
     877         was generated (see <a href="p1-messaging.html#header.date" title="Date">Section 8.3</a> of <a href="#Part1" id="rfc.xref.Part1.16"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>). We use the term "date_value" to denote the value of the Date header, in a form appropriate for arithmetic operations.
    875878      </p>
    876879      <p id="rfc.section.4.3.p.4">HTTP/1.1 uses the Age response-header to convey the estimated age of the response message when obtained from a cache. The
     
    10441047      </ul>
    10451048      <p id="rfc.section.7.1.p.3">All other headers defined by HTTP/1.1 are end-to-end headers.</p>
    1046       <p id="rfc.section.7.1.p.4">Other hop-by-hop headers <em class="bcp14">MUST</em> be listed in a Connection header (<a href="p1-messaging.html#header.connection" title="Connection">Section 8.1</a> of <a href="#Part1" id="rfc.xref.Part1.14"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>).
     1049      <p id="rfc.section.7.1.p.4">Other hop-by-hop headers <em class="bcp14">MUST</em> be listed in a Connection header (<a href="p1-messaging.html#header.connection" title="Connection">Section 8.1</a> of <a href="#Part1" id="rfc.xref.Part1.17"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>).
    10471050      </p>
    10481051      <h2 id="rfc.section.7.2"><a href="#rfc.section.7.2">7.2</a>&nbsp;<a id="non-modifiable.headers" href="#non-modifiable.headers">Non-modifiable Headers</a></h2>
     
    10791082         </dd>
    10801083      </dl>
    1081       <p id="rfc.section.7.2.p.7">The Content-Length field of a request or response is added or deleted according to the rules in <a href="p1-messaging.html#message.length" title="Message Length">Section 4.4</a> of <a href="#Part1" id="rfc.xref.Part1.15"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>. A transparent proxy <em class="bcp14">MUST</em> preserve the entity-length (<a href="p3-payload.html#entity.length" title="Entity Length">Section 4.2.2</a> of <a href="#Part3" id="rfc.xref.Part3.1"><cite title="HTTP/1.1, part 3: Message Payload and Content Negotiation">[Part3]</cite></a>) of the entity-body, although it <em class="bcp14">MAY</em> change the transfer-length (<a href="p1-messaging.html#message.length" title="Message Length">Section 4.4</a> of <a href="#Part1" id="rfc.xref.Part1.16"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>).
     1084      <p id="rfc.section.7.2.p.7">The Content-Length field of a request or response is added or deleted according to the rules in <a href="p1-messaging.html#message.length" title="Message Length">Section 4.4</a> of <a href="#Part1" id="rfc.xref.Part1.18"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>. A transparent proxy <em class="bcp14">MUST</em> preserve the entity-length (<a href="p3-payload.html#entity.length" title="Entity Length">Section 4.2.2</a> of <a href="#Part3" id="rfc.xref.Part3.1"><cite title="HTTP/1.1, part 3: Message Payload and Content Negotiation">[Part3]</cite></a>) of the entity-body, although it <em class="bcp14">MAY</em> change the transfer-length (<a href="p1-messaging.html#message.length" title="Message Length">Section 4.4</a> of <a href="#Part1" id="rfc.xref.Part1.19"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>).
    10821085      </p>
    10831086      <h2 id="rfc.section.7.3"><a href="#rfc.section.7.3">7.3</a>&nbsp;<a id="combining.headers" href="#combining.headers">Combining Headers</a></h2>
     
    11271130         request can be transformed to the selecting request-headers in the second request by adding or removing linear white space
    11281131         (LWS) at places where this is allowed by the corresponding BNF, and/or combining multiple message-header fields with the same
    1129          field name following the rules about message headers in <a href="p1-messaging.html#message.headers" title="Message Headers">Section 4.2</a> of <a href="#Part1" id="rfc.xref.Part1.17"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>.
     1132         field name following the rules about message headers in <a href="p1-messaging.html#message.headers" title="Message Headers">Section 4.2</a> of <a href="#Part1" id="rfc.xref.Part1.20"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>.
    11301133      </p>
    11311134      <p id="rfc.section.8.p.5">A Vary header field-value of "*" always fails to match and subsequent requests on that resource can only be properly interpreted
     
    12381241      <div id="rfc.iref.h.2"></div>
    12391242      <h2 id="rfc.section.16.1"><a href="#rfc.section.16.1">16.1</a>&nbsp;<a id="header.age" href="#header.age">Age</a></h2>
    1240       <p id="rfc.section.16.1.p.1">The Age response-header field conveys the sender's estimate of the amount of time since the response (or its revalidation)
     1243      <p id="rfc.section.16.1.p.1">The response-header field "Age" conveys the sender's estimate of the amount of time since the response (or its revalidation)
    12411244         was generated at the origin server. A cached response is "fresh" if its age does not exceed its freshness lifetime. Age values
    12421245         are calculated as specified in <a href="#age.calculations" title="Age Calculations">Section&nbsp;4.3</a>.
    12431246      </p>
    1244       <div id="rfc.figure.u.12"></div><pre class="inline"><span id="rfc.iref.g.1"></span><span id="rfc.iref.g.2"></span>  <a href="#header.age" class="smpl">Age</a> = "Age" ":" <a href="#header.age" class="smpl">age-value</a>
    1245   <a href="#header.age" class="smpl">age-value</a> = <a href="#rule.delta-seconds" class="smpl">delta-seconds</a>
     1247      <div id="rfc.figure.u.12"></div><pre class="inline"><span id="rfc.iref.g.1"></span><span id="rfc.iref.g.2"></span>  <a href="#header.age" class="smpl">Age</a>   = "Age" <a href="#notation" class="smpl">BWS</a> ":" <a href="#notation" class="smpl">OWS</a> <a href="#header.age" class="smpl">Age-v</a>
     1248  <a href="#header.age" class="smpl">Age-v</a> = <a href="#rule.delta-seconds" class="smpl">delta-seconds</a>
    12461249</pre><div id="rule.delta-seconds">
    12471250         <p id="rfc.section.16.1.p.3">  Age values are non-negative decimal integers, representing time in seconds.</p>
     
    12541257      <div id="rfc.iref.h.3"></div>
    12551258      <h2 id="rfc.section.16.2"><a href="#rfc.section.16.2">16.2</a>&nbsp;<a id="header.cache-control" href="#header.cache-control">Cache-Control</a></h2>
    1256       <p id="rfc.section.16.2.p.1">The Cache-Control general-header field is used to specify directives that <em class="bcp14">MUST</em> be obeyed by all caching mechanisms along the request/response chain. The directives specify behavior intended to prevent
     1259      <p id="rfc.section.16.2.p.1">The general-header field "Cache-Control" is used to specify directives that <em class="bcp14">MUST</em> be obeyed by all caching mechanisms along the request/response chain. The directives specify behavior intended to prevent
    12571260         caches from adversely interfering with the request or response. These directives typically override the default caching algorithms.
    12581261         Cache directives are unidirectional in that the presence of a directive in a request does not imply that the same directive
     
    12671270         a specific cache.
    12681271      </p>
    1269       <div id="rfc.figure.u.14"></div><pre class="inline"><span id="rfc.iref.g.4"></span><span id="rfc.iref.g.5"></span><span id="rfc.iref.g.6"></span><span id="rfc.iref.g.7"></span><span id="rfc.iref.g.8"></span>  <a href="#header.cache-control" class="smpl">Cache-Control</a>   = "Cache-Control" ":" 1#<a href="#header.cache-control" class="smpl">cache-directive</a>
     1272      <div id="rfc.figure.u.14"></div><pre class="inline"><span id="rfc.iref.g.4"></span><span id="rfc.iref.g.5"></span><span id="rfc.iref.g.6"></span><span id="rfc.iref.g.7"></span><span id="rfc.iref.g.8"></span><span id="rfc.iref.g.9"></span>  <a href="#header.cache-control" class="smpl">Cache-Control</a>   = "Cache-Control" <a href="#notation" class="smpl">BWS</a> ":" <a href="#notation" class="smpl">OWS</a> <a href="#header.cache-control" class="smpl">Cache-Control-v</a>
     1273  <a href="#header.cache-control" class="smpl">Cache-Control-v</a> = 1#<a href="#header.cache-control" class="smpl">cache-directive</a>
    12701274
    12711275  <a href="#header.cache-control" class="smpl">cache-directive</a> = <a href="#header.cache-control" class="smpl">cache-request-directive</a>
     
    15691573         that time.
    15701574      </p>
    1571       <p id="rfc.section.16.3.p.3">The format is an absolute date and time as defined by HTTP-date in <a href="p1-messaging.html#full.date" title="Full Date">Section 3.3.1</a> of <a href="#Part1" id="rfc.xref.Part1.18"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>; it <em class="bcp14">MUST</em> be sent in rfc1123-date format.
    1572       </p>
    1573       <div id="rfc.figure.u.16"></div><pre class="inline"><span id="rfc.iref.g.9"></span>  <a href="#header.expires" class="smpl">Expires</a> = "Expires" ":" <a href="#abnf.dependencies" class="smpl">HTTP-date</a>
     1575      <p id="rfc.section.16.3.p.3">The format is an absolute date and time as defined by HTTP-date in <a href="p1-messaging.html#full.date" title="Full Date">Section 3.3.1</a> of <a href="#Part1" id="rfc.xref.Part1.21"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>; it <em class="bcp14">MUST</em> be sent in rfc1123-date format.
     1576      </p>
     1577      <div id="rfc.figure.u.16"></div><pre class="inline"><span id="rfc.iref.g.10"></span><span id="rfc.iref.g.11"></span>  <a href="#header.expires" class="smpl">Expires</a>   = "Expires" <a href="#notation" class="smpl">BWS</a> ":" <a href="#notation" class="smpl">OWS</a> <a href="#header.expires" class="smpl">Expires-v</a>
     1578  <a href="#header.expires" class="smpl">Expires-v</a> = <a href="#abnf.dependencies" class="smpl">HTTP-date</a>
    15741579</pre><p id="rfc.section.16.3.p.5">An example of its use is</p>
    1575       <div id="rfc.figure.u.17"></div><pre class="text">   Expires: Thu, 01 Dec 1994 16:00:00 GMT
     1580      <div id="rfc.figure.u.17"></div><pre class="text">  Expires: Thu, 01 Dec 1994 16:00:00 GMT
    15761581</pre><p id="rfc.section.16.3.p.7"> </p>
    15771582      <dl class="empty">
     
    15941599      <div id="rfc.iref.h.5"></div>
    15951600      <h2 id="rfc.section.16.4"><a href="#rfc.section.16.4">16.4</a>&nbsp;<a id="header.pragma" href="#header.pragma">Pragma</a></h2>
    1596       <p id="rfc.section.16.4.p.1">The Pragma general-header field is used to include implementation-specific directives that might apply to any recipient along
    1597          the request/response chain. All pragma directives specify optional behavior from the viewpoint of the protocol; however, some
    1598          systems <em class="bcp14">MAY</em> require that behavior be consistent with the directives.
    1599       </p>
    1600       <div id="rfc.figure.u.18"></div><pre class="inline"><span id="rfc.iref.g.10"></span><span id="rfc.iref.g.11"></span><span id="rfc.iref.g.12"></span>  <a href="#header.pragma" class="smpl">Pragma</a>            = "Pragma" ":" 1#<a href="#header.pragma" class="smpl">pragma-directive</a>
     1601      <p id="rfc.section.16.4.p.1">The general-header field "Pragma" is used to include implementation-specific directives that might apply to any recipient
     1602         along the request/response chain. All pragma directives specify optional behavior from the viewpoint of the protocol; however,
     1603         some systems <em class="bcp14">MAY</em> require that behavior be consistent with the directives.
     1604      </p>
     1605      <div id="rfc.figure.u.18"></div><pre class="inline"><span id="rfc.iref.g.12"></span><span id="rfc.iref.g.13"></span><span id="rfc.iref.g.14"></span><span id="rfc.iref.g.15"></span>  <a href="#header.pragma" class="smpl">Pragma</a>            = "Pragma" <a href="#notation" class="smpl">BWS</a> ":" <a href="#notation" class="smpl">OWS</a> <a href="#header.pragma" class="smpl">Pragma-v</a>
     1606  <a href="#header.pragma" class="smpl">Pragma-v</a>          = 1#<a href="#header.pragma" class="smpl">pragma-directive</a>
    16011607  <a href="#header.pragma" class="smpl">pragma-directive</a>  = "no-cache" / <a href="#header.pragma" class="smpl">extension-pragma</a>
    16021608  <a href="#header.pragma" class="smpl">extension-pragma</a>  = <a href="#notation" class="smpl">token</a> [ "=" ( <a href="#notation" class="smpl">token</a> / <a href="#notation" class="smpl">quoted-string</a> ) ]
     
    16191625      <div id="rfc.iref.h.6"></div>
    16201626      <h2 id="rfc.section.16.5"><a href="#rfc.section.16.5">16.5</a>&nbsp;<a id="header.vary" href="#header.vary">Vary</a></h2>
    1621       <p id="rfc.section.16.5.p.1">The Vary response-header field's value indicates the set of request-header fields that fully determines, while the response
     1627      <p id="rfc.section.16.5.p.1">The "Vary" response-header field's value indicates the set of request-header fields that fully determines, while the response
    16221628         is fresh, whether a cache is permitted to use the response to reply to a subsequent request without revalidation. For uncacheable
    16231629         or stale responses, the Vary field value advises the user agent about the criteria that were used to select the representation.
     
    16251631         response is the appropriate representation. See <a href="#caching.negotiated.responses" title="Caching Negotiated Responses">Section&nbsp;8</a> for use of the Vary header field by caches.
    16261632      </p>
    1627       <div id="rfc.figure.u.19"></div><pre class="inline"><span id="rfc.iref.g.13"></span>  <a href="#header.vary" class="smpl">Vary</a>  = "Vary" ":" ( "*" / 1#<a href="#abnf.dependencies" class="smpl">field-name</a> )
     1633      <div id="rfc.figure.u.19"></div><pre class="inline"><span id="rfc.iref.g.16"></span><span id="rfc.iref.g.17"></span>  <a href="#header.vary" class="smpl">Vary</a>   = "Vary" <a href="#notation" class="smpl">BWS</a> ":" <a href="#notation" class="smpl">OWS</a> <a href="#header.vary" class="smpl">Vary-v</a>
     1634  <a href="#header.vary" class="smpl">Vary-v</a> = "*" / 1#<a href="#abnf.dependencies" class="smpl">field-name</a>
    16281635</pre><p id="rfc.section.16.5.p.3">An HTTP/1.1 server <em class="bcp14">SHOULD</em> include a Vary header field with any cacheable response that is subject to server-driven negotiation. Doing so allows a cache
    16291636         to properly interpret future requests on that resource and informs the user agent about the presence of negotiation on that
     
    16451652      <div id="rfc.iref.h.7"></div>
    16461653      <h2 id="rfc.section.16.6"><a href="#rfc.section.16.6">16.6</a>&nbsp;<a id="header.warning" href="#header.warning">Warning</a></h2>
    1647       <p id="rfc.section.16.6.p.1">The Warning general-header field is used to carry additional information about the status or transformation of a message which
    1648          might not be reflected in the message. This information is typically used to warn about a possible lack of semantic transparency
    1649          from caching operations or transformations applied to the entity body of the message.
     1654      <p id="rfc.section.16.6.p.1">The general-header field "Warning" is used to carry additional information about the status or transformation of a message
     1655         which might not be reflected in the message. This information is typically used to warn about a possible lack of semantic
     1656         transparency from caching operations or transformations applied to the entity body of the message.
    16501657      </p>
    16511658      <p id="rfc.section.16.6.p.2">Warning headers are sent with responses using:</p>
    1652       <div id="rfc.figure.u.20"></div><pre class="inline"><span id="rfc.iref.g.14"></span><span id="rfc.iref.g.15"></span><span id="rfc.iref.g.16"></span><span id="rfc.iref.g.17"></span><span id="rfc.iref.g.18"></span><span id="rfc.iref.g.19"></span>  <a href="#header.warning" class="smpl">Warning</a>    = "Warning" ":" 1#<a href="#header.warning" class="smpl">warning-value</a>
     1659      <div id="rfc.figure.u.20"></div><pre class="inline"><span id="rfc.iref.g.18"></span><span id="rfc.iref.g.19"></span><span id="rfc.iref.g.20"></span><span id="rfc.iref.g.21"></span><span id="rfc.iref.g.22"></span><span id="rfc.iref.g.23"></span><span id="rfc.iref.g.24"></span>  <a href="#header.warning" class="smpl">Warning</a>    = "Warning" <a href="#notation" class="smpl">BWS</a> ":" <a href="#notation" class="smpl">OWS</a> <a href="#header.warning" class="smpl">Warning-v</a>
     1660  <a href="#header.warning" class="smpl">Warning-v</a>  = 1#<a href="#header.warning" class="smpl">warning-value</a>
    16531661 
    16541662  <a href="#header.warning" class="smpl">warning-value</a> = <a href="#header.warning" class="smpl">warn-code</a> <a href="#notation" class="smpl">SP</a> <a href="#header.warning" class="smpl">warn-agent</a> <a href="#notation" class="smpl">SP</a> <a href="#header.warning" class="smpl">warn-text</a>
     
    19001908      <p id="rfc.section.A.1.p.2">Transfer-coding and message lengths all interact in ways that required fixing exactly when chunked encoding is used (to allow
    19011909         for transfer encoding that may not be self delimiting); it was important to straighten out exactly how message lengths are
    1902          computed. (<a href="#non-modifiable.headers" title="Non-modifiable Headers">Section&nbsp;7.2</a>, see also <a href="#Part1" id="rfc.xref.Part1.19"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="#Part3" id="rfc.xref.Part3.3"><cite title="HTTP/1.1, part 3: Message Payload and Content Negotiation">[Part3]</cite></a> and <a href="#Part5" id="rfc.xref.Part5.3"><cite title="HTTP/1.1, part 5: Range Requests and Partial Responses">[Part5]</cite></a>)
     1910         computed. (<a href="#non-modifiable.headers" title="Non-modifiable Headers">Section&nbsp;7.2</a>, see also <a href="#Part1" id="rfc.xref.Part1.22"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="#Part3" id="rfc.xref.Part3.3"><cite title="HTTP/1.1, part 3: Message Payload and Content Negotiation">[Part3]</cite></a> and <a href="#Part5" id="rfc.xref.Part5.3"><cite title="HTTP/1.1, part 5: Range Requests and Partial Responses">[Part5]</cite></a>)
    19031911      </p>
    19041912      <p id="rfc.section.A.1.p.3">Proxies should be able to add Content-Length when appropriate. (<a href="#non-modifiable.headers" title="Non-modifiable Headers">Section&nbsp;7.2</a>)
     
    19771985      <ul>
    19781986         <li>Use "/" instead of "|" for alternatives.</li>
     1987         <li>Introduce new ABNF rules for "bad" whitespace ("BWS"), optional whitespace ("OWS") and required whitespace ("RWS").</li>
     1988         <li>Rewrite ABNFs to spell out whitespace rules, factor out header value format definitions.</li>
    19791989      </ul>
    19801990      <h1><a id="rfc.copyright" href="#rfc.copyright">Full Copyright Statement</a></h1>
     
    20492059                     <ul class="ind">
    20502060                        <li class="indline1"><tt>Age</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.1"><b>16.1</b></a></li>
    2051                         <li class="indline1"><tt>age-value</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.2"><b>16.1</b></a></li>
     2061                        <li class="indline1"><tt>Age-v</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.2"><b>16.1</b></a></li>
    20522062                        <li class="indline1"><tt>Cache-Control</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.4"><b>16.2</b></a></li>
    2053                         <li class="indline1"><tt>cache-directive</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.5"><b>16.2</b></a></li>
    2054                         <li class="indline1"><tt>cache-extension</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.8"><b>16.2</b></a></li>
    2055                         <li class="indline1"><tt>cache-request-directive</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.6"><b>16.2</b></a></li>
    2056                         <li class="indline1"><tt>cache-response-directive</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.7"><b>16.2</b></a></li>
     2063                        <li class="indline1"><tt>Cache-Control-v</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.5"><b>16.2</b></a></li>
     2064                        <li class="indline1"><tt>cache-directive</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.6"><b>16.2</b></a></li>
     2065                        <li class="indline1"><tt>cache-extension</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.9"><b>16.2</b></a></li>
     2066                        <li class="indline1"><tt>cache-request-directive</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.7"><b>16.2</b></a></li>
     2067                        <li class="indline1"><tt>cache-response-directive</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.8"><b>16.2</b></a></li>
    20572068                        <li class="indline1"><tt>delta-seconds</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.3"><b>16.1</b></a></li>
    2058                         <li class="indline1"><tt>Expires</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.9"><b>16.3</b></a></li>
    2059                         <li class="indline1"><tt>extension-pragma</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.12"><b>16.4</b></a></li>
    2060                         <li class="indline1"><tt>Pragma</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.10"><b>16.4</b></a></li>
    2061                         <li class="indline1"><tt>pragma-directive</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.11"><b>16.4</b></a></li>
    2062                         <li class="indline1"><tt>Vary</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.13"><b>16.5</b></a></li>
    2063                         <li class="indline1"><tt>warn-agent</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.17"><b>16.6</b></a></li>
    2064                         <li class="indline1"><tt>warn-code</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.16"><b>16.6</b></a></li>
    2065                         <li class="indline1"><tt>warn-date</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.19"><b>16.6</b></a></li>
    2066                         <li class="indline1"><tt>warn-text</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.18"><b>16.6</b></a></li>
    2067                         <li class="indline1"><tt>Warning</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.14"><b>16.6</b></a></li>
    2068                         <li class="indline1"><tt>warning-value</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.15"><b>16.6</b></a></li>
     2069                        <li class="indline1"><tt>Expires</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.10"><b>16.3</b></a></li>
     2070                        <li class="indline1"><tt>Expires-v</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.11"><b>16.3</b></a></li>
     2071                        <li class="indline1"><tt>extension-pragma</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.15"><b>16.4</b></a></li>
     2072                        <li class="indline1"><tt>Pragma</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.12"><b>16.4</b></a></li>
     2073                        <li class="indline1"><tt>pragma-directive</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.14"><b>16.4</b></a></li>
     2074                        <li class="indline1"><tt>Pragma-v</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.13"><b>16.4</b></a></li>
     2075                        <li class="indline1"><tt>Vary</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.16"><b>16.5</b></a></li>
     2076                        <li class="indline1"><tt>Vary-v</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.17"><b>16.5</b></a></li>
     2077                        <li class="indline1"><tt>warn-agent</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.22"><b>16.6</b></a></li>
     2078                        <li class="indline1"><tt>warn-code</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.21"><b>16.6</b></a></li>
     2079                        <li class="indline1"><tt>warn-date</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.24"><b>16.6</b></a></li>
     2080                        <li class="indline1"><tt>warn-text</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.23"><b>16.6</b></a></li>
     2081                        <li class="indline1"><tt>Warning</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.18"><b>16.6</b></a></li>
     2082                        <li class="indline1"><tt>Warning-v</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.19"><b>16.6</b></a></li>
     2083                        <li class="indline1"><tt>warning-value</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.20"><b>16.6</b></a></li>
    20692084                     </ul>
    20702085                  </li>
     
    21392154            </li>
    21402155            <li class="indline0"><a id="rfc.index.P" href="#rfc.index.P"><b>P</b></a><ul class="ind">
    2141                   <li class="indline1"><em>Part1</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.1">2</a>, <a class="iref" href="#rfc.xref.Part1.2">2</a>, <a class="iref" href="#rfc.xref.Part1.3">2</a>, <a class="iref" href="#rfc.xref.Part1.4">2</a>, <a class="iref" href="#rfc.xref.Part1.5">2</a>, <a class="iref" href="#rfc.xref.Part1.6">2</a>, <a class="iref" href="#rfc.xref.Part1.7">2</a>, <a class="iref" href="#rfc.xref.Part1.8">2</a>, <a class="iref" href="#rfc.xref.Part1.9">2</a>, <a class="iref" href="#rfc.xref.Part1.10">2</a>, <a class="iref" href="#rfc.xref.Part1.11">2</a>, <a class="iref" href="#rfc.xref.Part1.12">2</a>, <a class="iref" href="#rfc.xref.Part1.13">4.3</a>, <a class="iref" href="#rfc.xref.Part1.14">7.1</a>, <a class="iref" href="#rfc.xref.Part1.15">7.2</a>, <a class="iref" href="#rfc.xref.Part1.16">7.2</a>, <a class="iref" href="#rfc.xref.Part1.17">8</a>, <a class="iref" href="#rfc.xref.Part1.18">16.3</a>, <a class="iref" href="#Part1"><b>20.1</b></a>, <a class="iref" href="#rfc.xref.Part1.19">A.1</a><ul class="ind">
     2156                  <li class="indline1"><em>Part1</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.1">2</a>, <a class="iref" href="#rfc.xref.Part1.2">2</a>, <a class="iref" href="#rfc.xref.Part1.3">2</a>, <a class="iref" href="#rfc.xref.Part1.4">2</a>, <a class="iref" href="#rfc.xref.Part1.5">2</a>, <a class="iref" href="#rfc.xref.Part1.6">2</a>, <a class="iref" href="#rfc.xref.Part1.7">2</a>, <a class="iref" href="#rfc.xref.Part1.8">2</a>, <a class="iref" href="#rfc.xref.Part1.9">2</a>, <a class="iref" href="#rfc.xref.Part1.10">2</a>, <a class="iref" href="#rfc.xref.Part1.11">2</a>, <a class="iref" href="#rfc.xref.Part1.12">2</a>, <a class="iref" href="#rfc.xref.Part1.13">2</a>, <a class="iref" href="#rfc.xref.Part1.14">2</a>, <a class="iref" href="#rfc.xref.Part1.15">2</a>, <a class="iref" href="#rfc.xref.Part1.16">4.3</a>, <a class="iref" href="#rfc.xref.Part1.17">7.1</a>, <a class="iref" href="#rfc.xref.Part1.18">7.2</a>, <a class="iref" href="#rfc.xref.Part1.19">7.2</a>, <a class="iref" href="#rfc.xref.Part1.20">8</a>, <a class="iref" href="#rfc.xref.Part1.21">16.3</a>, <a class="iref" href="#Part1"><b>20.1</b></a>, <a class="iref" href="#rfc.xref.Part1.22">A.1</a><ul class="ind">
    21422157                        <li class="indline1"><em>Section 2.1</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.1">2</a></li>
    2143                         <li class="indline1"><em>Section 2.2</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.2">2</a>, <a class="iref" href="#rfc.xref.Part1.3">2</a>, <a class="iref" href="#rfc.xref.Part1.4">2</a>, <a class="iref" href="#rfc.xref.Part1.5">2</a>, <a class="iref" href="#rfc.xref.Part1.6">2</a>, <a class="iref" href="#rfc.xref.Part1.7">2</a></li>
    2144                         <li class="indline1"><em>Section 3.2.1</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.10">2</a>, <a class="iref" href="#rfc.xref.Part1.12">2</a></li>
    2145                         <li class="indline1"><em>Section 3.3.1</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.9">2</a>, <a class="iref" href="#rfc.xref.Part1.18">16.3</a></li>
    2146                         <li class="indline1"><em>Section 4.2</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.8">2</a>, <a class="iref" href="#rfc.xref.Part1.17">8</a></li>
    2147                         <li class="indline1"><em>Section 4.4</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.15">7.2</a>, <a class="iref" href="#rfc.xref.Part1.16">7.2</a></li>
    2148                         <li class="indline1"><em>Section 8.1</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.14">7.1</a></li>
    2149                         <li class="indline1"><em>Section 8.3</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.13">4.3</a></li>
    2150                         <li class="indline1"><em>Section 8.9</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.11">2</a></li>
     2158                        <li class="indline1"><em>Section 2.2</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.2">2</a>, <a class="iref" href="#rfc.xref.Part1.3">2</a>, <a class="iref" href="#rfc.xref.Part1.4">2</a>, <a class="iref" href="#rfc.xref.Part1.5">2</a>, <a class="iref" href="#rfc.xref.Part1.6">2</a>, <a class="iref" href="#rfc.xref.Part1.7">2</a>, <a class="iref" href="#rfc.xref.Part1.8">2</a>, <a class="iref" href="#rfc.xref.Part1.9">2</a>, <a class="iref" href="#rfc.xref.Part1.10">2</a></li>
     2159                        <li class="indline1"><em>Section 3.2.1</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.13">2</a>, <a class="iref" href="#rfc.xref.Part1.15">2</a></li>
     2160                        <li class="indline1"><em>Section 3.3.1</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.12">2</a>, <a class="iref" href="#rfc.xref.Part1.21">16.3</a></li>
     2161                        <li class="indline1"><em>Section 4.2</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.11">2</a>, <a class="iref" href="#rfc.xref.Part1.20">8</a></li>
     2162                        <li class="indline1"><em>Section 4.4</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.18">7.2</a>, <a class="iref" href="#rfc.xref.Part1.19">7.2</a></li>
     2163                        <li class="indline1"><em>Section 8.1</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.17">7.1</a></li>
     2164                        <li class="indline1"><em>Section 8.3</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.16">4.3</a></li>
     2165                        <li class="indline1"><em>Section 8.9</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.14">2</a></li>
    21512166                     </ul>
    21522167                  </li>
Note: See TracChangeset for help on using the changeset viewer.