Changeset 362


Ignore:
Timestamp:
Nov 13, 2008, 7:47:23 AM (11 years ago)
Author:
julian.reschke@…
Message:

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

Location:
draft-ietf-httpbis/latest
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • draft-ietf-httpbis/latest/p4-conditional.html

    r345 r362  
    473473         <tr>
    474474            <td class="header left"></td>
    475             <td class="header right">November 11, 2008</td>
     475            <td class="header right">November 13, 2008</td>
    476476         </tr>
    477477      </table>
     
    580580      </p>
    581581      <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>
    582       <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://tools.ietf.org/wg/httpbis/trac/ticket/36">http://tools.ietf.org/wg/httpbis/trac/ticket/36</a>&gt;.]</span>
     582      <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://tools.ietf.org/wg/httpbis/trac/ticket/36">http://tools.ietf.org/wg/httpbis/trac/ticket/36</a>&gt;.]</span>
    583583      </p>
    584584      <div id="rfc.figure.u.1"></div><pre class="inline">  <a href="#notation" class="smpl">quoted-string</a> = &lt;quoted-string, 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;
     585  <a href="#notation" class="smpl">BWS</a>           = &lt;BWS, defined in <a href="#Part1" id="rfc.xref.Part1.4"><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;
     586  <a href="#notation" class="smpl">OWS</a>           = &lt;OWS, defined in <a href="#Part1" id="rfc.xref.Part1.5"><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;
     587  <a href="#notation" class="smpl">RWS</a>           = &lt;RWS, 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;
    585588</pre><div id="abnf.dependencies">
    586589         <p id="rfc.section.2.p.3">  The ABNF rules below are defined in other parts:</p>
    587590      </div>
    588       <div id="rfc.figure.u.2"></div><pre class="inline">  <a href="#abnf.dependencies" class="smpl">HTTP-date</a>     = &lt;HTTP-date, defined in <a href="#Part1" id="rfc.xref.Part1.4"><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;
     591      <div id="rfc.figure.u.2"></div><pre class="inline">  <a href="#abnf.dependencies" class="smpl">HTTP-date</a>     = &lt;HTTP-date, 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#full.date" title="Full Date">Section 3.3.1</a>&gt;
    589592</pre><h1 id="rfc.section.3"><a href="#rfc.section.3">3.</a>&nbsp;<a id="entity.tags" href="#entity.tags">Entity Tags</a></h1>
    590593      <p id="rfc.section.3.p.1">Entity tags are used for comparing two or more entities from the same requested resource. HTTP/1.1 uses entity tags in the
     
    613616      <ul>
    614617         <li>
    615             <p>Date, unless its omission is required by <a href="p1-messaging.html#clockless.origin.server.operation" title="Clockless Origin Server Operation">Section 8.3.1</a> of <a href="#Part1" id="rfc.xref.Part1.5"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>.
     618            <p>Date, unless its omission is required by <a href="p1-messaging.html#clockless.origin.server.operation" title="Clockless Origin Server Operation">Section 8.3.1</a> of <a href="#Part1" id="rfc.xref.Part1.8"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>.
    616619            </p>
    617620            <p>If a clockless origin server obeys these rules, and proxies and clients add their own Date to any response received without
    618                one (as already specified by <a href="p1-messaging.html#header.date" title="Date">Section 8.3</a> of <a href="#Part1" id="rfc.xref.Part1.6"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, caches will operate correctly.
     621               one (as already specified by <a href="p1-messaging.html#header.date" title="Date">Section 8.3</a> of <a href="#Part1" id="rfc.xref.Part1.9"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, caches will operate correctly.
    619622            </p>
    620623         </li>
     
    827830      <div id="rfc.iref.h.1"></div>
    828831      <h2 id="rfc.section.7.1"><a href="#rfc.section.7.1">7.1</a>&nbsp;<a id="header.etag" href="#header.etag">ETag</a></h2>
    829       <p id="rfc.section.7.1.p.1">The ETag response-header field provides the current value of the entity tag (see <a href="#entity.tags" title="Entity Tags">Section&nbsp;3</a>) for the requested variant. The headers used with entity tags are described in Sections <a href="#header.if-match" id="rfc.xref.header.if-match.2" title="If-Match">7.2</a> and <a href="#header.if-none-match" id="rfc.xref.header.if-none-match.2" title="If-None-Match">7.4</a> of this document, and in <a href="p5-range.html#header.if-range" title="If-Range">Section 6.3</a> of <a href="#Part5" id="rfc.xref.Part5.4"><cite title="HTTP/1.1, part 5: Range Requests and Partial Responses">[Part5]</cite></a>. The entity tag <em class="bcp14">MAY</em> be used for comparison with other entities from the same resource (see <a href="#weak.and.strong.validators" title="Weak and Strong Validators">Section&nbsp;5</a>).
    830       </p>
    831       <div id="rfc.figure.u.4"></div><pre class="inline"><span id="rfc.iref.g.4"></span>  <a href="#header.etag" class="smpl">ETag</a> = "ETag" ":" <a href="#entity.tags" class="smpl">entity-tag</a>
     832      <p id="rfc.section.7.1.p.1">The response-header field "ETag" provides the current value of the entity tag (see <a href="#entity.tags" title="Entity Tags">Section&nbsp;3</a>) for the requested variant. The headers used with entity tags are described in Sections <a href="#header.if-match" id="rfc.xref.header.if-match.2" title="If-Match">7.2</a> and <a href="#header.if-none-match" id="rfc.xref.header.if-none-match.2" title="If-None-Match">7.4</a> of this document, and in <a href="p5-range.html#header.if-range" title="If-Range">Section 6.3</a> of <a href="#Part5" id="rfc.xref.Part5.4"><cite title="HTTP/1.1, part 5: Range Requests and Partial Responses">[Part5]</cite></a>. The entity tag <em class="bcp14">MAY</em> be used for comparison with other entities from the same resource (see <a href="#weak.and.strong.validators" title="Weak and Strong Validators">Section&nbsp;5</a>).
     833      </p>
     834      <div id="rfc.figure.u.4"></div><pre class="inline"><span id="rfc.iref.g.4"></span><span id="rfc.iref.g.5"></span>  <a href="#header.etag" class="smpl">ETag</a>   = "ETag" <a href="#notation" class="smpl">BWS</a> ":" <a href="#notation" class="smpl">OWS</a> <a href="#header.etag" class="smpl">ETag-v</a>
     835  <a href="#header.etag" class="smpl">ETag-v</a> = <a href="#entity.tags" class="smpl">entity-tag</a>
    832836</pre><div id="rfc.figure.u.5"></div>
    833       <p>Examples:</p>  <pre class="text">   ETag: "xyzzy"
    834    ETag: W/"xyzzy"
    835    ETag: ""
     837      <p>Examples:</p>  <pre class="text">  ETag: "xyzzy"
     838  ETag: W/"xyzzy"
     839  ETag: ""
    836840</pre><p id="rfc.section.7.1.p.4">The ETag response-header field value, an entity tag, provides for an "opaque" cache validator. This might allow more reliable
    837841         validation in situations where it is inconvenient to store modification dates, where the one-second resolution of HTTP date
     
    847851      <div id="rfc.iref.h.2"></div>
    848852      <h2 id="rfc.section.7.2"><a href="#rfc.section.7.2">7.2</a>&nbsp;<a id="header.if-match" href="#header.if-match">If-Match</a></h2>
    849       <p id="rfc.section.7.2.p.1">The If-Match request-header field is used with a method to make it conditional. A client that has one or more entities previously
     853      <p id="rfc.section.7.2.p.1">The request-header field "If-Match" is used with a method to make it conditional. A client that has one or more entities previously
    850854         obtained from the resource can verify that one of those entities is current by including a list of their associated entity
    851855         tags in the If-Match header field. Entity tags are defined in <a href="#entity.tags" title="Entity Tags">Section&nbsp;3</a>. The purpose of this feature is to allow efficient updates of cached information with a minimum amount of transaction overhead.
     
    853857         case, the value "*" matches any current entity of the resource.
    854858      </p>
    855       <div id="rfc.figure.u.6"></div><pre class="inline"><span id="rfc.iref.g.5"></span>  <a href="#header.if-match" class="smpl">If-Match</a> = "If-Match" ":" ( "*" / 1#<a href="#entity.tags" class="smpl">entity-tag</a> )
     859      <div id="rfc.figure.u.6"></div><pre class="inline"><span id="rfc.iref.g.6"></span><span id="rfc.iref.g.7"></span>  <a href="#header.if-match" class="smpl">If-Match</a>   = "If-Match" <a href="#notation" class="smpl">BWS</a> ":" <a href="#notation" class="smpl">OWS</a> <a href="#header.if-match" class="smpl">If-Match-v</a>
     860  <a href="#header.if-match" class="smpl">If-Match-v</a> = "*" / 1#<a href="#entity.tags" class="smpl">entity-tag</a>
    856861</pre><p id="rfc.section.7.2.p.3">If any of the entity tags match the entity tag of the entity that would have been returned in the response to a similar GET
    857862         request (without the If-Match header) on that resource, or if "*" is given and any current entity exists for that resource,
     
    872877         their knowledge. Examples:
    873878      </p>
    874       <div id="rfc.figure.u.7"></div><pre class="text">    If-Match: "xyzzy"
    875     If-Match: "xyzzy", "r2d2xxxx", "c3piozzzz"
    876     If-Match: *
     879      <div id="rfc.figure.u.7"></div><pre class="text">  If-Match: "xyzzy"
     880  If-Match: "xyzzy", "r2d2xxxx", "c3piozzzz"
     881  If-Match: *
    877882</pre><p id="rfc.section.7.2.p.10">The result of a request having both an If-Match header field and either an If-None-Match or an If-Modified-Since header fields
    878883         is undefined by this specification.
     
    881886      <div id="rfc.iref.h.3"></div>
    882887      <h2 id="rfc.section.7.3"><a href="#rfc.section.7.3">7.3</a>&nbsp;<a id="header.if-modified-since" href="#header.if-modified-since">If-Modified-Since</a></h2>
    883       <p id="rfc.section.7.3.p.1">The If-Modified-Since request-header field is used with a method to make it conditional: if the requested variant has not
     888      <p id="rfc.section.7.3.p.1">The request-header field "If-Modified-Since" is used with a method to make it conditional: if the requested variant has not
    884889         been modified since the time specified in this field, an entity will not be returned from the server; instead, a 304 (Not
    885890         Modified) response will be returned without any message-body.
    886891      </p>
    887       <div id="rfc.figure.u.8"></div><pre class="inline"><span id="rfc.iref.g.6"></span>  <a href="#header.if-modified-since" class="smpl">If-Modified-Since</a> = "If-Modified-Since" ":" <a href="#abnf.dependencies" class="smpl">HTTP-date</a>
     892      <div id="rfc.figure.u.8"></div><pre class="inline"><span id="rfc.iref.g.8"></span><span id="rfc.iref.g.9"></span>  <a href="#header.if-modified-since" class="smpl">If-Modified-Since</a>   = "If-Modified-Since" <a href="#notation" class="smpl">BWS</a> ":" <a href="#notation" class="smpl">OWS</a> <a href="#header.if-modified-since" class="smpl">If-Modified-Since-v</a>
     893  <a href="#header.if-modified-since" class="smpl">If-Modified-Since-v</a> = <a href="#abnf.dependencies" class="smpl">HTTP-date</a>
    888894</pre><p id="rfc.section.7.3.p.3">An example of the field is:</p>
    889       <div id="rfc.figure.u.9"></div><pre class="text">    If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
     895      <div id="rfc.figure.u.9"></div><pre class="text">  If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
    890896</pre><p id="rfc.section.7.3.p.5">A GET method with an If-Modified-Since header and no Range header requests that the identified entity be transferred only
    891897         if it has been modified since the date given by the If-Modified-Since header. The algorithm for determining this includes
     
    926932      <div id="rfc.iref.h.4"></div>
    927933      <h2 id="rfc.section.7.4"><a href="#rfc.section.7.4">7.4</a>&nbsp;<a id="header.if-none-match" href="#header.if-none-match">If-None-Match</a></h2>
    928       <p id="rfc.section.7.4.p.1">The If-None-Match request-header field is used with a method to make it conditional. A client that has one or more entities
     934      <p id="rfc.section.7.4.p.1">The request-header field "If-None-Match" is used with a method to make it conditional. A client that has one or more entities
    929935         previously obtained from the resource can verify that none of those entities is current by including a list of their associated
    930936         entity tags in the If-None-Match header field. The purpose of this feature is to allow efficient updates of cached information
     
    933939      </p>
    934940      <p id="rfc.section.7.4.p.2">As a special case, the value "*" matches any current entity of the resource.</p>
    935       <div id="rfc.figure.u.10"></div><pre class="inline"><span id="rfc.iref.g.7"></span>  <a href="#header.if-none-match" class="smpl">If-None-Match</a> = "If-None-Match" ":" ( "*" / 1#<a href="#entity.tags" class="smpl">entity-tag</a> )
     941      <div id="rfc.figure.u.10"></div><pre class="inline"><span id="rfc.iref.g.10"></span><span id="rfc.iref.g.11"></span>  <a href="#header.if-none-match" class="smpl">If-None-Match</a>   = "If-None-Match" <a href="#notation" class="smpl">BWS</a> ":" <a href="#notation" class="smpl">OWS</a> <a href="#header.if-none-match" class="smpl">If-None-Match-v</a>
     942  <a href="#header.if-none-match" class="smpl">If-None-Match-v</a> = "*" / 1#<a href="#entity.tags" class="smpl">entity-tag</a>
    936943</pre><p id="rfc.section.7.4.p.4">If any of the entity tags match the entity tag of the entity that would have been returned in the response to a similar GET
    937944         request (without the If-None-Match header) on that resource, or if "*" is given and any current entity exists for that resource,
     
    950957      </p>
    951958      <p id="rfc.section.7.4.p.9">Examples:</p>
    952       <div id="rfc.figure.u.11"></div><pre class="text">    If-None-Match: "xyzzy"
    953     If-None-Match: W/"xyzzy"
    954     If-None-Match: "xyzzy", "r2d2xxxx", "c3piozzzz"
    955     If-None-Match: W/"xyzzy", W/"r2d2xxxx", W/"c3piozzzz"
    956     If-None-Match: *
     959      <div id="rfc.figure.u.11"></div><pre class="text">  If-None-Match: "xyzzy"
     960  If-None-Match: W/"xyzzy"
     961  If-None-Match: "xyzzy", "r2d2xxxx", "c3piozzzz"
     962  If-None-Match: W/"xyzzy", W/"r2d2xxxx", W/"c3piozzzz"
     963  If-None-Match: *
    957964</pre><p id="rfc.section.7.4.p.11">The result of a request having both an If-None-Match header field and either an If-Match or an If-Unmodified-Since header
    958965         fields is undefined by this specification.
     
    961968      <div id="rfc.iref.h.5"></div>
    962969      <h2 id="rfc.section.7.5"><a href="#rfc.section.7.5">7.5</a>&nbsp;<a id="header.if-unmodified-since" href="#header.if-unmodified-since">If-Unmodified-Since</a></h2>
    963       <p id="rfc.section.7.5.p.1">The If-Unmodified-Since request-header field is used with a method to make it conditional. If the requested resource has not
    964          been modified since the time specified in this field, the server <em class="bcp14">SHOULD</em> perform the requested operation as if the If-Unmodified-Since header were not present.
     970      <p id="rfc.section.7.5.p.1">The request-header field "If-Unmodified-Since" is used with a method to make it conditional. If the requested resource has
     971         not been modified since the time specified in this field, the server <em class="bcp14">SHOULD</em> perform the requested operation as if the If-Unmodified-Since header were not present.
    965972      </p>
    966973      <p id="rfc.section.7.5.p.2">If the requested variant has been modified since the specified time, the server <em class="bcp14">MUST NOT</em> perform the requested operation, and <em class="bcp14">MUST</em> return a 412 (Precondition Failed).
    967974      </p>
    968       <div id="rfc.figure.u.12"></div><pre class="inline"><span id="rfc.iref.g.8"></span>  <a href="#header.if-unmodified-since" class="smpl">If-Unmodified-Since</a> = "If-Unmodified-Since" ":" <a href="#abnf.dependencies" class="smpl">HTTP-date</a>
     975      <div id="rfc.figure.u.12"></div><pre class="inline"><span id="rfc.iref.g.12"></span><span id="rfc.iref.g.13"></span>  <a href="#header.if-unmodified-since" class="smpl">If-Unmodified-Since</a>   = "If-Unmodified-Since" <a href="#notation" class="smpl">BWS</a> ":" <a href="#notation" class="smpl">OWS</a> <a href="#header.if-unmodified-since" class="smpl">If-Unmodified-Since-v</a>
     976  <a href="#header.if-unmodified-since" class="smpl">If-Unmodified-Since-v</a> = <a href="#abnf.dependencies" class="smpl">HTTP-date</a>
    969977</pre><p id="rfc.section.7.5.p.4">An example of the field is:</p>
    970       <div id="rfc.figure.u.13"></div><pre class="text">    If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT
     978      <div id="rfc.figure.u.13"></div><pre class="text">  If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT
    971979</pre><p id="rfc.section.7.5.p.6">If the request normally (i.e., without the If-Unmodified-Since header) would result in anything other than a 2xx or 412 status,
    972980         the If-Unmodified-Since header <em class="bcp14">SHOULD</em> be ignored.
     
    979987      <div id="rfc.iref.h.6"></div>
    980988      <h2 id="rfc.section.7.6"><a href="#rfc.section.7.6">7.6</a>&nbsp;<a id="header.last-modified" href="#header.last-modified">Last-Modified</a></h2>
    981       <p id="rfc.section.7.6.p.1">The Last-Modified entity-header field indicates the date and time at which the origin server believes the variant was last
     989      <p id="rfc.section.7.6.p.1">The entity-header field "Last-Modified" indicates the date and time at which the origin server believes the variant was last
    982990         modified.
    983991      </p>
    984       <div id="rfc.figure.u.14"></div><pre class="inline"><span id="rfc.iref.g.9"></span>  <a href="#header.last-modified" class="smpl">Last-Modified</a>  = "Last-Modified" ":" <a href="#abnf.dependencies" class="smpl">HTTP-date</a>
     992      <div id="rfc.figure.u.14"></div><pre class="inline"><span id="rfc.iref.g.14"></span><span id="rfc.iref.g.15"></span>  <a href="#header.last-modified" class="smpl">Last-Modified</a>   = "Last-Modified" <a href="#notation" class="smpl">BWS</a> ":" <a href="#notation" class="smpl">OWS</a> <a href="#header.last-modified" class="smpl">Last-Modified-v</a>
     993  <a href="#header.last-modified" class="smpl">Last-Modified-v</a> = <a href="#abnf.dependencies" class="smpl">HTTP-date</a>
    985994</pre><p id="rfc.section.7.6.p.3">An example of its use is</p>
    986       <div id="rfc.figure.u.15"></div><pre class="text">    Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT
     995      <div id="rfc.figure.u.15"></div><pre class="text">  Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT
    987996</pre><p id="rfc.section.7.6.p.5">The exact meaning of this header field depends on the implementation of the origin server and the nature of the original resource.
    988997         For files, it may be just the file system last-modified time. For entities with dynamically included parts, it may be the
     
    10651074      <p id="rfc.section.8.1.p.2">The change controller is: "IETF (iesg@ietf.org) - Internet Engineering Task Force".</p>
    10661075      <h1 id="rfc.section.9"><a href="#rfc.section.9">9.</a>&nbsp;<a id="security.considerations" href="#security.considerations">Security Considerations</a></h1>
    1067       <p id="rfc.section.9.p.1">No additional security considerations have been identified beyond those applicable to HTTP in general <a href="#Part1" id="rfc.xref.Part1.7"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>.
     1076      <p id="rfc.section.9.p.1">No additional security considerations have been identified beyond those applicable to HTTP in general <a href="#Part1" id="rfc.xref.Part1.10"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>.
    10681077      </p>
    10691078      <h1 id="rfc.section.10"><a href="#rfc.section.10">10.</a>&nbsp;<a id="ack" href="#ack">Acknowledgments</a></h1>
     
    11771186      <ul>
    11781187         <li>Use "/" instead of "|" for alternatives.</li>
     1188         <li>Introduce new ABNF rules for "bad" whitespace ("BWS"), optional whitespace ("OWS") and required whitespace ("RWS").</li>
     1189         <li>Rewrite ABNFs to spell out whitespace rules, factor out header value format definitions.</li>
    11791190      </ul>
    11801191      <h1><a id="rfc.copyright" href="#rfc.copyright">Full Copyright Statement</a></h1>
     
    12241235                        <li class="indline1"><tt>entity-tag</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.1"><b>3</b></a></li>
    12251236                        <li class="indline1"><tt>ETag</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.4"><b>7.1</b></a></li>
    1226                         <li class="indline1"><tt>If-Match</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.5"><b>7.2</b></a></li>
    1227                         <li class="indline1"><tt>If-Modified-Since</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.6"><b>7.3</b></a></li>
    1228                         <li class="indline1"><tt>If-None-Match</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.7"><b>7.4</b></a></li>
    1229                         <li class="indline1"><tt>If-Unmodified-Since</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.8"><b>7.5</b></a></li>
    1230                         <li class="indline1"><tt>Last-Modified</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.9"><b>7.6</b></a></li>
     1237                        <li class="indline1"><tt>ETag-v</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.5"><b>7.1</b></a></li>
     1238                        <li class="indline1"><tt>If-Match</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.6"><b>7.2</b></a></li>
     1239                        <li class="indline1"><tt>If-Match-v</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.7"><b>7.2</b></a></li>
     1240                        <li class="indline1"><tt>If-Modified-Since</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.8"><b>7.3</b></a></li>
     1241                        <li class="indline1"><tt>If-Modified-Since-v</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.9"><b>7.3</b></a></li>
     1242                        <li class="indline1"><tt>If-None-Match</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.10"><b>7.4</b></a></li>
     1243                        <li class="indline1"><tt>If-None-Match-v</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.11"><b>7.4</b></a></li>
     1244                        <li class="indline1"><tt>If-Unmodified-Since</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.12"><b>7.5</b></a></li>
     1245                        <li class="indline1"><tt>If-Unmodified-Since-v</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.13"><b>7.5</b></a></li>
     1246                        <li class="indline1"><tt>Last-Modified</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.14"><b>7.6</b></a></li>
     1247                        <li class="indline1"><tt>Last-Modified-v</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.15"><b>7.6</b></a></li>
    12311248                        <li class="indline1"><tt>opaque-tag</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.3"><b>3</b></a></li>
    12321249                        <li class="indline1"><tt>weak</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.2"><b>3</b></a></li>
     
    12601277            </li>
    12611278            <li class="indline0"><a id="rfc.index.P" href="#rfc.index.P"><b>P</b></a><ul class="ind">
    1262                   <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">4.1</a>, <a class="iref" href="#rfc.xref.Part1.6">4.1</a>, <a class="iref" href="#rfc.xref.Part1.7">9</a>, <a class="iref" href="#Part1"><b>11.1</b></a><ul class="ind">
     1279                  <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">4.1</a>, <a class="iref" href="#rfc.xref.Part1.9">4.1</a>, <a class="iref" href="#rfc.xref.Part1.10">9</a>, <a class="iref" href="#Part1"><b>11.1</b></a><ul class="ind">
    12631280                        <li class="indline1"><em>Section 2.1</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.1">2</a></li>
    1264                         <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></li>
    1265                         <li class="indline1"><em>Section 3.3.1</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.4">2</a></li>
    1266                         <li class="indline1"><em>Section 8.3.1</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.5">4.1</a></li>
    1267                         <li class="indline1"><em>Section 8.3</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.6">4.1</a></li>
     1281                        <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></li>
     1282                        <li class="indline1"><em>Section 3.3.1</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.7">2</a></li>
     1283                        <li class="indline1"><em>Section 8.3.1</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.8">4.1</a></li>
     1284                        <li class="indline1"><em>Section 8.3</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.9">4.1</a></li>
    12681285                     </ul>
    12691286                  </li>
  • draft-ietf-httpbis/latest/p4-conditional.xml

    r345 r362  
    253253<section title="Notational Conventions and Generic Grammar" anchor="notation">
    254254  <x:anchor-alias value="quoted-string"/>
     255  <x:anchor-alias value="BWS"/>
     256  <x:anchor-alias value="OWS"/>
     257  <x:anchor-alias value="RWS"/>
    255258<t>
    256259  This specification uses the ABNF syntax defined in &notation-abnf; and
     
    261264<figure><artwork type="abnf2616">
    262265  <x:ref>quoted-string</x:ref> = &lt;quoted-string, defined in &basic-rules;&gt;
     266  <x:ref>BWS</x:ref>           = &lt;BWS, defined in &basic-rules;&gt;
     267  <x:ref>OWS</x:ref>           = &lt;OWS, defined in &basic-rules;&gt;
     268  <x:ref>RWS</x:ref>           = &lt;RWS, defined in &basic-rules;&gt;
    263269</artwork></figure>
    264270<t anchor="abnf.dependencies">
     
    650656  <iref primary="true" item="Headers" subitem="ETag" x:for-anchor=""/>
    651657  <x:anchor-alias value="ETag"/>
    652 <t>
    653    The ETag response-header field provides the current value of the
     658  <x:anchor-alias value="ETag-v"/>
     659<t>
     660   The response-header field "ETag" provides the current value of the
    654661   entity tag (see <xref target="entity.tags"/>) for the requested variant.
    655662   The headers used with entity
     
    660667   (see <xref target="weak.and.strong.validators"/>).
    661668</t>
    662 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="ETag"/>
    663   <x:ref>ETag</x:ref> = "ETag" ":" <x:ref>entity-tag</x:ref>
     669<figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="ETag"/><iref primary="true" item="Grammar" subitem="ETag-v"/>
     670  <x:ref>ETag</x:ref>   = "ETag" <x:ref>BWS</x:ref> ":" <x:ref>OWS</x:ref> <x:ref>ETag-v</x:ref>
     671  <x:ref>ETag-v</x:ref> = <x:ref>entity-tag</x:ref>
    664672</artwork></figure>
    665673<figure><preamble>
    666    Examples:
     674  Examples:
    667675</preamble>
    668676<artwork type="example">
    669    ETag: "xyzzy"
    670    ETag: W/"xyzzy"
    671    ETag: ""
     677  ETag: "xyzzy"
     678  ETag: W/"xyzzy"
     679  ETag: ""
    672680</artwork></figure>
    673681<t>
     
    694702  <iref primary="true" item="Headers" subitem="If-Match" x:for-anchor=""/>
    695703  <x:anchor-alias value="If-Match"/>
    696 <t>
    697    The If-Match request-header field is used with a method to make it
     704  <x:anchor-alias value="If-Match-v"/>
     705<t>
     706   The request-header field "If-Match" is used with a method to make it
    698707   conditional. A client that has one or more entities previously
    699708   obtained from the resource can verify that one of those entities is
     
    706715   matches any current entity of the resource.
    707716</t>
    708 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="If-Match"/>
    709   <x:ref>If-Match</x:ref> = "If-Match" ":" ( "*" / 1#<x:ref>entity-tag</x:ref> )
     717<figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="If-Match"/><iref primary="true" item="Grammar" subitem="If-Match-v"/>
     718  <x:ref>If-Match</x:ref>   = "If-Match" <x:ref>BWS</x:ref> ":" <x:ref>OWS</x:ref> <x:ref>If-Match-v</x:ref>
     719  <x:ref>If-Match-v</x:ref> = "*" / 1#<x:ref>entity-tag</x:ref>
    710720</artwork></figure>
    711721<t>
     
    750760</t>
    751761<figure><artwork type="example">
    752     If-Match: "xyzzy"
    753     If-Match: "xyzzy", "r2d2xxxx", "c3piozzzz"
    754     If-Match: *
     762  If-Match: "xyzzy"
     763  If-Match: "xyzzy", "r2d2xxxx", "c3piozzzz"
     764  If-Match: *
    755765</artwork></figure>
    756766<t>
     
    765775  <iref primary="true" item="Headers" subitem="If-Modified-Since" x:for-anchor=""/>
    766776  <x:anchor-alias value="If-Modified-Since"/>
    767 <t>
    768    The If-Modified-Since request-header field is used with a method to
     777  <x:anchor-alias value="If-Modified-Since-v"/>
     778<t>
     779   The request-header field "If-Modified-Since" is used with a method to
    769780   make it conditional: if the requested variant has not been modified
    770781   since the time specified in this field, an entity will not be
     
    772783   be returned without any message-body.
    773784</t>
    774 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="If-Modified-Since"/>
    775   <x:ref>If-Modified-Since</x:ref> = "If-Modified-Since" ":" <x:ref>HTTP-date</x:ref>
     785<figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="If-Modified-Since"/><iref primary="true" item="Grammar" subitem="If-Modified-Since-v"/>
     786  <x:ref>If-Modified-Since</x:ref>   = "If-Modified-Since" <x:ref>BWS</x:ref> ":" <x:ref>OWS</x:ref> <x:ref>If-Modified-Since-v</x:ref>
     787  <x:ref>If-Modified-Since-v</x:ref> = <x:ref>HTTP-date</x:ref>
    776788</artwork></figure>
    777789<t>
     
    779791</t>
    780792<figure><artwork type="example">
    781     If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
     793  If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
    782794</artwork></figure>
    783795<t>
     
    847859  <iref primary="true" item="Headers" subitem="If-None-Match" x:for-anchor=""/>
    848860  <x:anchor-alias value="If-None-Match"/>
    849 <t>
    850    The If-None-Match request-header field is used with a method to make
     861  <x:anchor-alias value="If-None-Match-v"/>
     862<t>
     863   The request-header field "If-None-Match" is used with a method to make
    851864   it conditional. A client that has one or more entities previously
    852865   obtained from the resource can verify that none of those entities is
     
    862875   resource.
    863876</t>
    864 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="If-None-Match"/>
    865   <x:ref>If-None-Match</x:ref> = "If-None-Match" ":" ( "*" / 1#<x:ref>entity-tag</x:ref> )
     877<figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="If-None-Match"/><iref primary="true" item="Grammar" subitem="If-None-Match-v"/>
     878  <x:ref>If-None-Match</x:ref>   = "If-None-Match" <x:ref>BWS</x:ref> ":" <x:ref>OWS</x:ref> <x:ref>If-None-Match-v</x:ref>
     879  <x:ref>If-None-Match-v</x:ref> = "*" / 1#<x:ref>entity-tag</x:ref>
    866880</artwork></figure>
    867881<t>
     
    909923</t>
    910924<figure><artwork type="example">
    911     If-None-Match: "xyzzy"
    912     If-None-Match: W/"xyzzy"
    913     If-None-Match: "xyzzy", "r2d2xxxx", "c3piozzzz"
    914     If-None-Match: W/"xyzzy", W/"r2d2xxxx", W/"c3piozzzz"
    915     If-None-Match: *
     925  If-None-Match: "xyzzy"
     926  If-None-Match: W/"xyzzy"
     927  If-None-Match: "xyzzy", "r2d2xxxx", "c3piozzzz"
     928  If-None-Match: W/"xyzzy", W/"r2d2xxxx", W/"c3piozzzz"
     929  If-None-Match: *
    916930</artwork></figure>
    917931<t>
     
    926940  <iref primary="true" item="Headers" subitem="If-Unmodified-Since" x:for-anchor=""/>
    927941  <x:anchor-alias value="If-Unmodified-Since"/>
    928 <t>
    929    The If-Unmodified-Since request-header field is used with a method to
     942  <x:anchor-alias value="If-Unmodified-Since-v"/>
     943<t>
     944   The request-header field "If-Unmodified-Since" is used with a method to
    930945   make it conditional. If the requested resource has not been modified
    931946   since the time specified in this field, the server &SHOULD; perform the
     
    938953   a 412 (Precondition Failed).
    939954</t>
    940 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="If-Unmodified-Since"/>
    941   <x:ref>If-Unmodified-Since</x:ref> = "If-Unmodified-Since" ":" <x:ref>HTTP-date</x:ref>
     955<figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="If-Unmodified-Since"/><iref primary="true" item="Grammar" subitem="If-Unmodified-Since-v"/>
     956  <x:ref>If-Unmodified-Since</x:ref>   = "If-Unmodified-Since" <x:ref>BWS</x:ref> ":" <x:ref>OWS</x:ref> <x:ref>If-Unmodified-Since-v</x:ref>
     957  <x:ref>If-Unmodified-Since-v</x:ref> = <x:ref>HTTP-date</x:ref>
    942958</artwork></figure>
    943959<t>
     
    945961</t>
    946962<figure><artwork type="example">
    947     If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT
     963  If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT
    948964</artwork></figure>
    949965<t>
     
    966982  <iref primary="true" item="Headers" subitem="Last-Modified" x:for-anchor=""/>
    967983  <x:anchor-alias value="Last-Modified"/>
    968 <t>
    969    The Last-Modified entity-header field indicates the date and time at
     984  <x:anchor-alias value="Last-Modified-v"/>
     985<t>
     986   The entity-header field "Last-Modified" indicates the date and time at
    970987   which the origin server believes the variant was last modified.
    971988</t>
    972 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="Last-Modified"/>
    973   <x:ref>Last-Modified</x:ref>  = "Last-Modified" ":" <x:ref>HTTP-date</x:ref>
     989<figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="Last-Modified"/><iref primary="true" item="Grammar" subitem="Last-Modified-v"/>
     990  <x:ref>Last-Modified</x:ref>   = "Last-Modified" <x:ref>BWS</x:ref> ":" <x:ref>OWS</x:ref> <x:ref>Last-Modified-v</x:ref>
     991  <x:ref>Last-Modified-v</x:ref> = <x:ref>HTTP-date</x:ref>
    974992</artwork></figure>
    975993<t>
     
    977995</t>
    978996<figure><artwork type="example">
    979     Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT
     997  Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT
    980998</artwork></figure>
    981999<t>
     
    13951413      Use "/" instead of "|" for alternatives.
    13961414    </t>
     1415    <t>
     1416      Introduce new ABNF rules for "bad" whitespace ("BWS"), optional
     1417      whitespace ("OWS") and required whitespace ("RWS").
     1418    </t>
     1419    <t>
     1420      Rewrite ABNFs to spell out whitespace rules, factor out
     1421      header value format definitions.
     1422    </t>
    13971423  </list>
    13981424</t>
Note: See TracChangeset for help on using the changeset viewer.