Changeset 1470
- Timestamp:
- 02/11/11 12:33:39 (11 years ago)
- Location:
- draft-ietf-httpbis/latest
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
draft-ietf-httpbis/latest/httpbis.abnf
r1435 r1470 126 126 delta-seconds = 1*DIGIT 127 127 entity-tag = [ weak ] opaque-tag 128 etagc = "!" / %x23-7E ; '#'-'~' 129 / obs-text 128 130 expect-params = ";" token [ "=" ( token / quoted-string ) ] 129 131 expectation = "100-continue" / expectation-extension … … 164 166 obs-fold = CRLF ( SP / HTAB ) 165 167 obs-text = %x80-FF 166 opaque-tag = quoted-string168 opaque-tag = DQUOTE *etagc DQUOTE 167 169 other-content-range-spec = other-range-unit SP other-range-resp-spec 168 170 other-range-resp-spec = *CHAR -
draft-ietf-httpbis/latest/p4-conditional.html
r1469 r1470 359 359 } 360 360 @bottom-center { 361 content: "Expires May 4, 2012";361 content: "Expires May 5, 2012"; 362 362 } 363 363 @bottom-right { … … 404 404 <meta name="dct.creator" content="Reschke, J. F."> 405 405 <meta name="dct.identifier" content="urn:ietf:id:draft-ietf-httpbis-p4-conditional-latest"> 406 <meta name="dct.issued" scheme="ISO8601" content="2011-11-0 1">406 <meta name="dct.issued" scheme="ISO8601" content="2011-11-02"> 407 407 <meta name="dct.replaces" content="urn:ietf:rfc:2616"> 408 408 <meta name="dct.abstract" content="The Hypertext Transfer Protocol (HTTP) is an application-level protocol for distributed, collaborative, hypertext information systems. HTTP has been in use by the World Wide Web global information initiative since 1990. This document is Part 4 of the seven-part specification that defines the protocol referred to as "HTTP/1.1" and, taken together, obsoletes RFC 2616. Part 4 defines request header fields for indicating conditional requests and the rules for constructing responses to those requests."> … … 430 430 </tr> 431 431 <tr> 432 <td class="left">Expires: May 4, 2012</td>432 <td class="left">Expires: May 5, 2012</td> 433 433 <td class="right">J. Mogul</td> 434 434 </tr> … … 487 487 <tr> 488 488 <td class="left"></td> 489 <td class="right">November 1, 2011</td>489 <td class="right">November 2, 2011</td> 490 490 </tr> 491 491 </tbody> … … 517 517 in progress”. 518 518 </p> 519 <p>This Internet-Draft will expire on May 4, 2012.</p>519 <p>This Internet-Draft will expire on May 5, 2012.</p> 520 520 <h1><a id="rfc.copyrightnotice" href="#rfc.copyrightnotice">Copyright Notice</a></h1> 521 521 <p>Copyright © 2011 IETF Trust and the persons identified as the document authors. All rights reserved.</p> … … 654 654 </p> 655 655 <div id="rfc.figure.u.1"></div><pre class="inline"> <a href="#notation" class="smpl">OWS</a> = <OWS, 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 1.2.2</a>> 656 <a href="#notation" class="smpl"> quoted-string</a> = <quoted-string, 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#field.rules" title="Common Field ABNF Rules">Section 3.2.3</a>>656 <a href="#notation" class="smpl">obs-text</a> = <obs-text, 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#field.rules" title="Common Field ABNF Rules">Section 3.2.3</a>> 657 657 <a href="#notation" class="smpl">HTTP-date</a> = <HTTP-date, defined in <a href="#Part2" id="rfc.xref.Part2.2"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>, <a href="p2-semantics.html#http.date" title="Date/Time Formats">Section 8</a>> 658 658 </pre><div id="rfc.iref.m.1"></div> … … 777 777 same time, or both. An entity-tag consists of an opaque quoted string, possibly prefixed by a weakness indicator. 778 778 </p> 779 <div id="rfc.figure.u.4"></div><pre class="inline"><span id="rfc.iref.g.2"></span><span id="rfc.iref.g.3"></span><span id="rfc.iref.g.4"></span><span id="rfc.iref.g.5"></span> <a href="#header.etag" class="smpl">ETag</a> = <a href="#header.etag" class="smpl">entity-tag</a>779 <div id="rfc.figure.u.4"></div><pre class="inline"><span id="rfc.iref.g.2"></span><span id="rfc.iref.g.3"></span><span id="rfc.iref.g.4"></span><span id="rfc.iref.g.5"></span><span id="rfc.iref.g.6"></span> <a href="#header.etag" class="smpl">ETag</a> = <a href="#header.etag" class="smpl">entity-tag</a> 780 780 781 781 <a href="#header.etag" class="smpl">entity-tag</a> = [ <a href="#header.etag" class="smpl">weak</a> ] <a href="#header.etag" class="smpl">opaque-tag</a> 782 782 <a href="#header.etag" class="smpl">weak</a> = %x57.2F ; "W/", case-sensitive 783 <a href="#header.etag" class="smpl">opaque-tag</a> = <a href="#notation" class="smpl">quoted-string</a> 784 </pre><p id="rfc.section.2.3.p.3">An entity-tag can be more reliable for validation than a modification date in situations where it is inconvenient to store 783 <a href="#header.etag" class="smpl">opaque-tag</a> = <a href="#notation" class="smpl">DQUOTE</a> *<a href="#header.etag" class="smpl">etagc</a> <a href="#notation" class="smpl">DQUOTE</a> 784 <a href="#header.etag" class="smpl">etagc</a> = %x21 / %x23-7E / <a href="#notation" class="smpl">obs-text</a> 785 ; <a href="#">VCHAR</a> except double quotes, plus obs-text 786 </pre><div class="note" id="rfc.section.2.3.p.3"> 787 <p> <b>Note:</b> Previously, opaque-tag was defined to be a quoted-string (<a href="#RFC2616" id="rfc.xref.RFC2616.1"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a>, <a href="http://tools.ietf.org/html/rfc2616#section-3.11">Section 3.11</a>), thus some recipients might perform backslash unescaping. Servers therefore ought to avoid backslash characters in entity 788 tags. 789 </p> 790 </div> 791 <p id="rfc.section.2.3.p.4">An entity-tag can be more reliable for validation than a modification date in situations where it is inconvenient to store 785 792 modification dates, where the one-second resolution of HTTP date values is not sufficient, or where modification dates are 786 793 not consistently maintained. … … 790 797 ETag: W/"xyzzy" 791 798 ETag: "" 792 </pre><p id="rfc.section.2.3.p. 5">An entity-tag can be either a weak or strong validator, with strong being the default. If an origin server provides an entity-tag799 </pre><p id="rfc.section.2.3.p.6">An entity-tag can be either a weak or strong validator, with strong being the default. If an origin server provides an entity-tag 793 800 for a representation and the generation of that entity-tag does not satisfy the requirements for a strong validator (<a href="#weak.and.strong.validators" title="Weak versus Strong">Section 2.1</a>), then that entity-tag <em class="bcp14">MUST</em> be marked as weak by prefixing its opaque value with "W/" (case-sensitive). 794 801 </p> … … 957 964 An If-Match field-value of "*" places the precondition on the existence of any current representation for the target resource. 958 965 </p> 959 <div id="rfc.figure.u.9"></div><pre class="inline"><span id="rfc.iref.g. 6"></span> <a href="#header.if-match" class="smpl">If-Match</a> = "*" / 1#<a href="#header.etag" class="smpl">entity-tag</a>966 <div id="rfc.figure.u.9"></div><pre class="inline"><span id="rfc.iref.g.7"></span> <a href="#header.if-match" class="smpl">If-Match</a> = "*" / 1#<a href="#header.etag" class="smpl">entity-tag</a> 960 967 </pre><p id="rfc.section.3.1.p.3">If any of the entity-tags listed in the If-Match field value match (as per <a href="#entity.tag.comparison" title="Comparison">Section 2.3.2</a>) the entity-tag of the selected representation for the target resource, or if "*" is given and any current representation 961 968 exists for the target resource, then the server <em class="bcp14">MAY</em> perform the request method as if the If-Match header field was not present. … … 987 994 for the target resource. 988 995 </p> 989 <div id="rfc.figure.u.11"></div><pre class="inline"><span id="rfc.iref.g. 7"></span> <a href="#header.if-none-match" class="smpl">If-None-Match</a> = "*" / 1#<a href="#header.etag" class="smpl">entity-tag</a>996 <div id="rfc.figure.u.11"></div><pre class="inline"><span id="rfc.iref.g.8"></span> <a href="#header.if-none-match" class="smpl">If-None-Match</a> = "*" / 1#<a href="#header.etag" class="smpl">entity-tag</a> 990 997 </pre><p id="rfc.section.3.2.p.4">If any of the entity-tags listed in the If-None-Match field-value match (as per <a href="#entity.tag.comparison" title="Comparison">Section 2.3.2</a>) the entity-tag of the selected representation, or if "*" is given and any current representation exists for that resource, 991 998 then the server <em class="bcp14">MUST NOT</em> perform the requested method. Instead, if the request method was GET or HEAD, the server <em class="bcp14">SHOULD</em> respond with a 304 (Not Modified) status code, including the cache-related header fields (particularly ETag) of the selected … … 1012 1019 the time specified in this field, then do not perform the request method; instead, respond as detailed below. 1013 1020 </p> 1014 <div id="rfc.figure.u.13"></div><pre class="inline"><span id="rfc.iref.g. 8"></span> <a href="#header.if-modified-since" class="smpl">If-Modified-Since</a> = <a href="#notation" class="smpl">HTTP-date</a>1021 <div id="rfc.figure.u.13"></div><pre class="inline"><span id="rfc.iref.g.9"></span> <a href="#header.if-modified-since" class="smpl">If-Modified-Since</a> = <a href="#notation" class="smpl">HTTP-date</a> 1015 1022 </pre><p id="rfc.section.3.3.p.3">An example of the field is:</p> 1016 1023 <div id="rfc.figure.u.14"></div><pre class="text"> If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT … … 1060 1067 the time specified in this field, the server <em class="bcp14">SHOULD</em> perform the request method as if the If-Unmodified-Since header field were not present. 1061 1068 </p> 1062 <div id="rfc.figure.u.15"></div><pre class="inline"><span id="rfc.iref.g. 9"></span> <a href="#header.if-unmodified-since" class="smpl">If-Unmodified-Since</a> = <a href="#notation" class="smpl">HTTP-date</a>1069 <div id="rfc.figure.u.15"></div><pre class="inline"><span id="rfc.iref.g.10"></span> <a href="#header.if-unmodified-since" class="smpl">If-Unmodified-Since</a> = <a href="#notation" class="smpl">HTTP-date</a> 1063 1070 </pre><p id="rfc.section.3.4.p.3">An example of the field is:</p> 1064 1071 <div id="rfc.figure.u.16"></div><pre class="text"> If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT … … 1076 1083 </p> 1077 1084 <h1 id="rfc.section.4"><a href="#rfc.section.4">4.</a> <a id="status.code.definitions" href="#status.code.definitions">Status Code Definitions</a></h1> 1078 <div id="rfc.iref.2 6"></div>1085 <div id="rfc.iref.27"></div> 1079 1086 <div id="rfc.iref.s.2"></div> 1080 1087 <h2 id="rfc.section.4.1"><a href="#rfc.section.4.1">4.1</a> <a id="status.304" href="#status.304">304 Not Modified</a></h2> … … 1099 1106 <p id="rfc.section.4.1.p.5">If a cache uses a received 304 response to update a cache entry, the cache <em class="bcp14">MUST</em> update the entry to reflect any new field values given in the response. 1100 1107 </p> 1101 <div id="rfc.iref.2 7"></div>1108 <div id="rfc.iref.28"></div> 1102 1109 <div id="rfc.iref.s.3"></div> 1103 1110 <h2 id="rfc.section.4.2"><a href="#rfc.section.4.2">4.2</a> <a id="status.412" href="#status.412">412 Precondition Failed</a></h2> … … 1284 1291 <p id="rfc.section.A.p.1">Allow weak entity-tags in all requests except range requests (Sections <a href="#weak.and.strong.validators" title="Weak versus Strong">2.1</a> and <a href="#header.if-none-match" id="rfc.xref.header.if-none-match.2" title="If-None-Match">3.2</a>). 1285 1292 </p> 1286 <p id="rfc.section.A.p.2">Change ABNF productions for header fields to only define the field value. (<a href="#header.field.definitions" title="Precondition Header Fields">Section 3</a>) 1293 <p id="rfc.section.A.p.2">Change ETag header field ABNF not to use quoted-string, thus avoiding escaping issues. (<a href="#header.etag" id="rfc.xref.header.etag.2" title="ETag">Section 2.3</a>) 1294 </p> 1295 <p id="rfc.section.A.p.3">Change ABNF productions for header fields to only define the field value. (<a href="#header.field.definitions" title="Precondition Header Fields">Section 3</a>) 1287 1296 </p> 1288 1297 <h1 id="rfc.section.B"><a href="#rfc.section.B">B.</a> <a id="collected.abnf" href="#collected.abnf">Collected ABNF</a></h1> … … 1303 1312 1304 1313 <a href="#header.etag" class="smpl">entity-tag</a> = [ weak ] opaque-tag 1305 1306 <a href="#header.etag" class="smpl">opaque-tag</a> = quoted-string 1307 1308 <a href="#notation" class="smpl">quoted-string</a> = <quoted-string, defined in [Part1], Section 3.2.3> 1314 <a href="#header.etag" class="smpl">etagc</a> = "!" / %x23-7E ; '#'-'~' 1315 / obs-text 1316 1317 <a href="#notation" class="smpl">obs-text</a> = <obs-text, defined in [Part1], Section 3.2.3> 1318 <a href="#header.etag" class="smpl">opaque-tag</a> = DQUOTE *etagc DQUOTE 1309 1319 1310 1320 <a href="#header.etag" class="smpl">weak</a> = %x57.2F ; W/ … … 1319 1329 <h2 id="rfc.section.C.1"><a href="#rfc.section.C.1">C.1</a> Since RFC 2616 1320 1330 </h2> 1321 <p id="rfc.section.C.1.p.1">Extracted relevant partitions from <a href="#RFC2616" id="rfc.xref.RFC2616. 1"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a>.1331 <p id="rfc.section.C.1.p.1">Extracted relevant partitions from <a href="#RFC2616" id="rfc.xref.RFC2616.2"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a>. 1322 1332 </p> 1323 1333 <h2 id="rfc.section.C.2"><a href="#rfc.section.C.2">C.2</a> Since draft-ietf-httpbis-p4-conditional-00 … … 1437 1447 </ul> 1438 1448 <h2 id="rfc.section.C.19"><a href="#rfc.section.C.19">C.19</a> <a id="changes.since.17" href="#changes.since.17">Since draft-ietf-httpbis-p4-conditional-17</a></h2> 1439 <p id="rfc.section.C.19.p.1">No changes yet.</p> 1449 <p id="rfc.section.C.19.p.1">Closed issues: </p> 1450 <ul> 1451 <li> <<a href="http://tools.ietf.org/wg/httpbis/trac/ticket/306">http://tools.ietf.org/wg/httpbis/trac/ticket/306</a>>: "does etag value really use quoted-string" 1452 </li> 1453 </ul> 1440 1454 <h1 id="rfc.index"><a href="#rfc.index">Index</a></h1> 1441 1455 <p class="noprint"><a href="#rfc.index.3">3</a> <a href="#rfc.index.4">4</a> <a href="#rfc.index.E">E</a> <a href="#rfc.index.G">G</a> <a href="#rfc.index.H">H</a> <a href="#rfc.index.I">I</a> <a href="#rfc.index.L">L</a> <a href="#rfc.index.M">M</a> <a href="#rfc.index.P">P</a> <a href="#rfc.index.R">R</a> <a href="#rfc.index.S">S</a> <a href="#rfc.index.V">V</a> … … 1444 1458 <ul class="ind"> 1445 1459 <li><a id="rfc.index.3" href="#rfc.index.3"><b>3</b></a><ul> 1446 <li>304 Not Modified (status code) <a href="#rfc.iref.2 6"><b>4.1</b></a>, <a href="#rfc.xref.status.304.1">5.1</a></li>1460 <li>304 Not Modified (status code) <a href="#rfc.iref.27"><b>4.1</b></a>, <a href="#rfc.xref.status.304.1">5.1</a></li> 1447 1461 </ul> 1448 1462 </li> 1449 1463 <li><a id="rfc.index.4" href="#rfc.index.4"><b>4</b></a><ul> 1450 <li>412 Precondition Failed (status code) <a href="#rfc.iref.2 7"><b>4.2</b></a>, <a href="#rfc.xref.status.412.1">5.1</a></li>1464 <li>412 Precondition Failed (status code) <a href="#rfc.iref.28"><b>4.2</b></a>, <a href="#rfc.xref.status.412.1">5.1</a></li> 1451 1465 </ul> 1452 1466 </li> 1453 1467 <li><a id="rfc.index.E" href="#rfc.index.E"><b>E</b></a><ul> 1454 <li>ETag header field <a href="#rfc.iref.e.1"><b>2.3</b></a>, <a href="#rfc.xref.header.etag.1">5.2</a> </li>1468 <li>ETag header field <a href="#rfc.iref.e.1"><b>2.3</b></a>, <a href="#rfc.xref.header.etag.1">5.2</a>, <a href="#rfc.xref.header.etag.2">A</a></li> 1455 1469 </ul> 1456 1470 </li> … … 1460 1474 <li><tt>entity-tag</tt> <a href="#rfc.iref.g.3"><b>2.3</b></a></li> 1461 1475 <li><tt>ETag</tt> <a href="#rfc.iref.g.2"><b>2.3</b></a></li> 1462 <li><tt>If-Match</tt> <a href="#rfc.iref.g.6"><b>3.1</b></a></li> 1463 <li><tt>If-Modified-Since</tt> <a href="#rfc.iref.g.8"><b>3.3</b></a></li> 1464 <li><tt>If-None-Match</tt> <a href="#rfc.iref.g.7"><b>3.2</b></a></li> 1465 <li><tt>If-Unmodified-Since</tt> <a href="#rfc.iref.g.9"><b>3.4</b></a></li> 1476 <li><tt>etagc</tt> <a href="#rfc.iref.g.6"><b>2.3</b></a></li> 1477 <li><tt>If-Match</tt> <a href="#rfc.iref.g.7"><b>3.1</b></a></li> 1478 <li><tt>If-Modified-Since</tt> <a href="#rfc.iref.g.9"><b>3.3</b></a></li> 1479 <li><tt>If-None-Match</tt> <a href="#rfc.iref.g.8"><b>3.2</b></a></li> 1480 <li><tt>If-Unmodified-Since</tt> <a href="#rfc.iref.g.10"><b>3.4</b></a></li> 1466 1481 <li><tt>Last-Modified</tt> <a href="#rfc.iref.g.1"><b>2.2</b></a></li> 1467 1482 <li><tt>opaque-tag</tt> <a href="#rfc.iref.g.5"><b>2.3</b></a></li> … … 1474 1489 <li>Header Fields 1475 1490 <ul> 1476 <li>ETag <a href="#rfc.iref.h.2"><b>2.3</b></a>, <a href="#rfc.xref.header.etag.1">5.2</a> </li>1491 <li>ETag <a href="#rfc.iref.h.2"><b>2.3</b></a>, <a href="#rfc.xref.header.etag.1">5.2</a>, <a href="#rfc.xref.header.etag.2">A</a></li> 1477 1492 <li>If-Match <a href="#rfc.iref.h.3"><b>3.1</b></a>, <a href="#rfc.xref.header.if-match.1">5.2</a></li> 1478 1493 <li>If-Modified-Since <a href="#rfc.iref.h.5"><b>3.3</b></a>, <a href="#rfc.xref.header.if-modified-since.1">5.2</a></li> … … 1529 1544 <li><a id="rfc.index.R" href="#rfc.index.R"><b>R</b></a><ul> 1530 1545 <li><em>RFC2119</em> <a href="#rfc.xref.RFC2119.1">1.1</a>, <a href="#RFC2119"><b>8.1</b></a></li> 1531 <li><em>RFC2616</em> <a href="#RFC2616"><b>8.2</b></a>, <a href="#rfc.xref.RFC2616.1">C.1</a></li> 1546 <li><em>RFC2616</em> <a href="#rfc.xref.RFC2616.1">2.3</a>, <a href="#RFC2616"><b>8.2</b></a>, <a href="#rfc.xref.RFC2616.2">C.1</a><ul> 1547 <li><em>Section 3.11</em> <a href="#rfc.xref.RFC2616.1">2.3</a></li> 1548 </ul> 1549 </li> 1532 1550 <li><em>RFC3864</em> <a href="#rfc.xref.RFC3864.1">5.2</a>, <a href="#RFC3864"><b>8.2</b></a></li> 1533 1551 <li><em>RFC4918</em> <a href="#rfc.xref.RFC4918.1">2</a>, <a href="#RFC4918"><b>8.2</b></a></li> -
draft-ietf-httpbis/latest/p4-conditional.xml
r1469 r1470 293 293 <x:anchor-alias value="CR"/> 294 294 <x:anchor-alias value="DIGIT"/> 295 <x:anchor-alias value="DQUOTE"/> 295 296 <x:anchor-alias value="LF"/> 296 297 <x:anchor-alias value="OCTET"/> 297 298 <x:anchor-alias value="VCHAR"/> 298 299 <x:anchor-alias value="core.rules"/> 299 <x:anchor-alias value=" quoted-string"/>300 <x:anchor-alias value="obs-text"/> 300 301 <x:anchor-alias value="OWS"/> 301 302 <x:anchor-alias value="HTTP-date"/> … … 321 322 <figure><artwork type="abnf2616"> 322 323 <x:ref>OWS</x:ref> = <OWS, defined in &basic-rules;> 323 <x:ref> quoted-string</x:ref> = <quoted-string, defined in &field-rules;>324 <x:ref>obs-text</x:ref> = <obs-text, defined in &field-rules;> 324 325 <x:ref>HTTP-date</x:ref> = <HTTP-date, defined in &http-date;> 325 326 </artwork></figure> … … 548 549 <x:anchor-alias value="opaque-tag"/> 549 550 <x:anchor-alias value="weak"/> 551 <x:anchor-alias value="etagc"/> 550 552 <t> 551 553 The ETag header field provides the current entity-tag for the … … 558 560 quoted string, possibly prefixed by a weakness indicator. 559 561 </t> 560 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="ETag"/><iref primary="true" item="Grammar" subitem="entity-tag"/><iref primary="true" item="Grammar" subitem="weak"/><iref primary="true" item="Grammar" subitem="opaque-tag"/> 562 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="ETag"/><iref primary="true" item="Grammar" subitem="entity-tag"/><iref primary="true" item="Grammar" subitem="weak"/><iref primary="true" item="Grammar" subitem="opaque-tag"/><iref primary="true" item="Grammar" subitem="etagc"/> 561 563 <x:ref>ETag</x:ref> = <x:ref>entity-tag</x:ref> 562 564 563 565 <x:ref>entity-tag</x:ref> = [ <x:ref>weak</x:ref> ] <x:ref>opaque-tag</x:ref> 564 566 <x:ref>weak</x:ref> = <x:abnf-char-sequence>"W/"</x:abnf-char-sequence> ; "W/", case-sensitive 565 <x:ref>opaque-tag</x:ref> = <x:ref>quoted-string</x:ref> 567 <x:ref>opaque-tag</x:ref> = <x:ref>DQUOTE</x:ref> *<x:ref>etagc</x:ref> <x:ref>DQUOTE</x:ref> 568 <x:ref>etagc</x:ref> = %x21 / %x23-7E / <x:ref>obs-text</x:ref> 569 ; <xref>VCHAR</xref> except double quotes, plus obs-text 566 570 </artwork></figure> 571 <x:note> 572 <t> 573 <x:h>Note:</x:h> Previously, opaque-tag was defined to be a quoted-string 574 (<xref target="RFC2616" x:fmt="," x:sec="3.11"/>), thus some recipients 575 might perform backslash unescaping. Servers therefore ought to avoid 576 backslash characters in entity tags. 577 </t> 578 </x:note> 567 579 <t> 568 580 An entity-tag can be more reliable for validation than a modification … … 1567 1579 </t> 1568 1580 <t> 1581 Change ETag header field ABNF not to use quoted-string, thus avoiding 1582 escaping issues. 1583 (<xref target="header.etag"/>) 1584 </t> 1585 <t> 1569 1586 Change ABNF productions for header fields to only define the field value. 1570 1587 (<xref target="header.field.definitions"/>) … … 1592 1609 1593 1610 <x:ref>entity-tag</x:ref> = [ weak ] opaque-tag 1594 1595 <x:ref>opaque-tag</x:ref> = quoted-string 1596 1597 <x:ref>quoted-string</x:ref> = <quoted-string, defined in [Part1], Section 3.2.3> 1611 <x:ref>etagc</x:ref> = "!" / %x23-7E ; '#'-'~' 1612 / obs-text 1613 1614 <x:ref>obs-text</x:ref> = <obs-text, defined in [Part1], Section 3.2.3> 1615 <x:ref>opaque-tag</x:ref> = DQUOTE *etagc DQUOTE 1598 1616 1599 1617 <x:ref>weak</x:ref> = %x57.2F ; W/ … … 1855 1873 <section title="Since draft-ietf-httpbis-p4-conditional-17" anchor="changes.since.17"> 1856 1874 <t> 1857 No changes yet. 1875 Closed issues: 1876 <list style="symbols"> 1877 <t> 1878 <eref target="http://tools.ietf.org/wg/httpbis/trac/ticket/306"/>: 1879 "does etag value really use quoted-string" 1880 </t> 1881 </list> 1858 1882 </t> 1859 1883 </section>
Note: See TracChangeset
for help on using the changeset viewer.