Changeset 2669
- Timestamp:
- 13/05/14 14:35:29 (7 years ago)
- Location:
- draft-ietf-httpbis/latest/auth48
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
draft-ietf-httpbis/latest/auth48/p4-conditional.unpg.txt
r2668 r2669 129 129 2.3.1. Generation . . . . . . . . . . . . . . . . . . . . . . 10 130 130 2.3.2. Comparison . . . . . . . . . . . . . . . . . . . . . . 10 131 2.3.3. Example: Entity- tags Varying on Content-Negotiated131 2.3.3. Example: Entity-Tags Varying on Content-Negotiated 132 132 Resources . . . . . . . . . . . . . . . . . . . . . . 11 133 2.4. When to Use Entity- tags and Last-Modified Dates . . . . . 12133 2.4. When to Use Entity-Tags and Last-Modified Dates . . . . . 12 134 134 3. Precondition Header Fields . . . . . . . . . . . . . . . . . . 13 135 135 3.1. If-Match . . . . . . . . . . . . . . . . . . . . . . . . . 13 … … 238 238 modification dates (Section 2.2) and opaque entity tags 239 239 (Section 2.3). Additional metadata that reflects resource state has 240 been defined by various extensions of HTTP, such as Web DAV [RFC4918],241 that are beyond the scope of this specification. A resource metadata242 value is referred to as a "validator" when it is used within a243 precondition.240 been defined by various extensions of HTTP, such as Web Distributed 241 Authoring and Versioning (WebDAV, [RFC4918]), that are beyond the 242 scope of this specification. A resource metadata value is referred 243 to as a "validator" when it is used within a precondition. 244 244 245 245 2.1. Weak versus Strong … … 446 446 have a Date value equal to its Last-Modified time. The arbitrary 60- 447 447 second limit guards against the possibility that the Date and Last- 448 Modified values are generated from different clocks ,or at somewhat448 Modified values are generated from different clocks or at somewhat 449 449 different times during the preparation of the response. An 450 450 implementation MAY use a value larger than 60 seconds, if it is … … 481 481 482 482 Note: Previously, opaque-tag was defined to be a quoted-string 483 ([RFC2616], Section 3.11) , thussome recipients might perform483 ([RFC2616], Section 3.11); thus, some recipients might perform 484 484 backslash unescaping. Servers therefore ought to avoid backslash 485 485 characters in entity tags. … … 532 532 a modification timestamp that has sub-second resolution. 533 533 534 An origin server SHOULD send ETag for any selected representation for535 which detection of changes can be reasonably and consistently534 An origin server SHOULD send an ETag for any selected representation 535 for which detection of changes can be reasonably and consistently 536 536 determined, since the entity-tag's use in conditional requests and 537 537 evaluating cache freshness ([RFC7234]) can result in a substantial … … 542 542 543 543 There are two entity-tag comparison functions, depending on whether 544 the comparison context allows the use of weak validators or not:544 or not the comparison context allows the use of weak validators: 545 545 546 546 o Strong comparison: two entity-tags are equivalent if both are not … … 551 551 being tagged as "weak". 552 552 553 The example below shows the results for a set of entity-tag pairs ,554 andboth the weak and strong comparison function results:553 The example below shows the results for a set of entity-tag pairs and 554 both the weak and strong comparison function results: 555 555 556 556 +--------+--------+-------------------+-----------------+ … … 572 572 573 573 574 2.3.3. Example: Entity- tags Varying on Content-Negotiated Resources574 2.3.3. Example: Entity-Tags Varying on Content-Negotiated Resources 575 575 576 576 Consider a resource that is subject to content negotiation (Section … … 637 637 entity-tags. 638 638 639 2.4. When to Use Entity- tags and Last-Modified Dates639 2.4. When to Use Entity-Tags and Last-Modified Dates 640 640 641 641 In 200 (OK) responses to GET or HEAD, an origin server: … … 731 731 732 732 An origin server MUST NOT perform the requested method if a received 733 If-Match condition evaluates to false; instead the origin server MUST734 respond with either: a) the 412 (Precondition Failed) status code;735 or ,b) one of the 2xx (Successful) status codes if the origin server733 If-Match condition evaluates to false; instead, the origin server 734 MUST respond with either a) the 412 (Precondition Failed) status code 735 or b) one of the 2xx (Successful) status codes if the origin server 736 736 737 737 … … 816 816 condition evaluates to false; instead, the origin server MUST respond 817 817 with either a) the 304 (Not Modified) status code if the request 818 method is GET or HEAD ; or, b) the 412 (Precondition Failed) status819 codefor all other request methods.818 method is GET or HEAD or b) the 412 (Precondition Failed) status code 819 for all other request methods. 820 820 821 821 Requirements on cache handling of a received If-None-Match header … … 839 839 If-None-Match header field; the condition in If-None-Match is 840 840 considered to be a more accurate replacement for the condition in If- 841 Modified-Since and the two are only combined for the sake of841 Modified-Since, and the two are only combined for the sake of 842 842 interoperating with older intermediaries that might not implement If- 843 843 None-Match. … … 861 861 If-Modified-Since is typically used for two distinct purposes: 1) to 862 862 allow efficient updates of a cached representation that does not have 863 an entity-tag ; and,2) to limit the scope of a web traversal to863 an entity-tag and 2) to limit the scope of a web traversal to 864 864 resources that have recently changed. 865 865 … … 923 923 an If-Match header field; the condition in If-Match is considered to 924 924 be a more accurate replacement for the condition in If-Unmodified- 925 Since and the two are only combined for the sake of interoperating925 Since, and the two are only combined for the sake of interoperating 926 926 with older intermediaries that might not implement If-Match. 927 927 … … 945 945 if the selected representation's last modification date is more 946 946 recent than the date provided in the field-value; instead the origin 947 server MUST respond with either :a) the 412 (Precondition Failed)948 status code ; or,b) one of the 2xx (Successful) status codes if the947 server MUST respond with either a) the 412 (Precondition Failed) 948 status code or b) one of the 2xx (Successful) status codes if the 949 949 origin server has verified that a state change is being requested and 950 950 the final state is already reflected in the current state of the … … 975 975 The "If-Range" header field provides a special conditional request 976 976 mechanism that is similar to the If-Match and If-Unmodified-Since 977 header fields but instructs the recipient to ignore the Range header978 field if the validator doesn't match, resulting in transfer of the979 new selected representation instead of a 412 response. If-Range is980 defined in Section 3.2 of [RFC7233].977 header fields but that instructs the recipient to ignore the Range 978 header field if the validator doesn't match, resulting in transfer of 979 the new selected representation instead of a 412 response. If-Range 980 is defined in Section 3.2 of [RFC7233]. 981 981 982 982 4. Status Code Definitions … … 986 986 The 304 (Not Modified) status code indicates that a conditional GET 987 987 or HEAD request has been received and would have resulted in a 200 988 (OK) response if it were not for the fact that the condition has988 (OK) response if it were not for the fact that the condition 989 989 evaluated to false. In other words, there is no need for the server 990 990 to transfer a representation of the target resource because the … … 1030 1030 tested on the server. This response code allows the client to place 1031 1031 preconditions on the current resource state (its current 1032 representations and metadata) and thusprevent the request method1032 representations and metadata) and, thus, prevent the request method 1033 1033 from being applied if the target resource is in an unexpected state. 1034 1034 -
draft-ietf-httpbis/latest/auth48/rfc7232.abdiff.txt
r2668 r2669 97 97 98 98 99 Section 10., paragraph 0:100 OLD:101 102 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4103 1.1. Conformance and Error Handling . . . . . . . . . . . . . . 4104 1.2. Syntax Notation . . . . . . . . . . . . . . . . . . . . . 4105 2. Validators . . . . . . . . . . . . . . . . . . . . . . . . . . 5106 2.1. Weak versus Strong . . . . . . . . . . . . . . . . . . . . 5107 2.2. Last-Modified . . . . . . . . . . . . . . . . . . . . . . 7108 2.2.1. Generation . . . . . . . . . . . . . . . . . . . . . . 7109 2.2.2. Comparison . . . . . . . . . . . . . . . . . . . . . . 8110 2.3. ETag . . . . . . . . . . . . . . . . . . . . . . . . . . . 9111 2.3.1. Generation . . . . . . . . . . . . . . . . . . . . . . 10112 2.3.2. Comparison . . . . . . . . . . . . . . . . . . . . . . 10113 2.3.3. Example: Entity-tags Varying on Content-Negotiated114 Resources . . . . . . . . . . . . . . . . . . . . . . 11115 2.4. When to Use Entity-tags and Last-Modified Dates . . . . . 12116 3. Precondition Header Fields . . . . . . . . . . . . . . . . . . 13117 3.1. If-Match . . . . . . . . . . . . . . . . . . . . . . . . . 13118 3.2. If-None-Match . . . . . . . . . . . . . . . . . . . . . . 14119 3.3. If-Modified-Since . . . . . . . . . . . . . . . . . . . . 15120 3.4. If-Unmodified-Since . . . . . . . . . . . . . . . . . . . 16121 3.5. If-Range . . . . . . . . . . . . . . . . . . . . . . . . . 18122 4. Status Code Definitions . . . . . . . . . . . . . . . . . . . 18123 4.1. 304 Not Modified . . . . . . . . . . . . . . . . . . . . . 18124 4.2. 412 Precondition Failed . . . . . . . . . . . . . . . . . 18125 5. Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . 19126 6. Precedence . . . . . . . . . . . . . . . . . . . . . . . . . . 19127 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21128 7.1. Status Code Registration . . . . . . . . . . . . . . . . . 21129 7.2. Header Field Registration . . . . . . . . . . . . . . . . 21130 8. Security Considerations . . . . . . . . . . . . . . . . . . . 22131 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 22132 10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 23133 10.1. Normative References . . . . . . . . . . . . . . . . . . . 23134 10.2. Informative References . . . . . . . . . . . . . . . . . . 23135 Appendix A. Changes from RFC 2616 . . . . . . . . . . . . . . . . 23136 Appendix B. Imported ABNF . . . . . . . . . . . . . . . . . . . . 24137 Appendix C. Collected ABNF . . . . . . . . . . . . . . . . . . . 24138 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25139 140 NEW:141 142 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4143 1.1. Conformance and Error Handling . . . . . . . . . . . . . . 4144 1.2. Syntax Notation . . . . . . . . . . . . . . . . . . . . . 4145 2. Validators . . . . . . . . . . . . . . . . . . . . . . . . . . 5146 2.1. Weak versus Strong . . . . . . . . . . . . . . . . . . . . 5147 2.2. Last-Modified . . . . . . . . . . . . . . . . . . . . . . 7148 2.2.1. Generation . . . . . . . . . . . . . . . . . . . . . . 7149 2.2.2. Comparison . . . . . . . . . . . . . . . . . . . . . . 8150 2.3. ETag . . . . . . . . . . . . . . . . . . . . . . . . . . . 9151 2.3.1. Generation . . . . . . . . . . . . . . . . . . . . . . 10152 2.3.2. Comparison . . . . . . . . . . . . . . . . . . . . . . 10153 2.3.3. Example: Entity-Tags Varying on Content-Negotiated154 Resources . . . . . . . . . . . . . . . . . . . . . . 11155 2.4. When to Use Entity-Tags and Last-Modified Dates . . . . . 12156 3. Precondition Header Fields . . . . . . . . . . . . . . . . . . 13157 3.1. If-Match . . . . . . . . . . . . . . . . . . . . . . . . . 13158 3.2. If-None-Match . . . . . . . . . . . . . . . . . . . . . . 14159 3.3. If-Modified-Since . . . . . . . . . . . . . . . . . . . . 15160 3.4. If-Unmodified-Since . . . . . . . . . . . . . . . . . . . 16161 3.5. If-Range . . . . . . . . . . . . . . . . . . . . . . . . . 18162 4. Status Code Definitions . . . . . . . . . . . . . . . . . . . 18163 4.1. 304 Not Modified . . . . . . . . . . . . . . . . . . . . . 18164 4.2. 412 Precondition Failed . . . . . . . . . . . . . . . . . 18165 5. Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . 19166 6. Precedence . . . . . . . . . . . . . . . . . . . . . . . . . . 19167 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21168 7.1. Status Code Registration . . . . . . . . . . . . . . . . . 21169 7.2. Header Field Registration . . . . . . . . . . . . . . . . 21170 8. Security Considerations . . . . . . . . . . . . . . . . . . . 22171 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 22172 10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 23173 10.1. Normative References . . . . . . . . . . . . . . . . . . . 23174 10.2. Informative References . . . . . . . . . . . . . . . . . . 23175 Appendix A. Changes from RFC 2616 . . . . . . . . . . . . . . . . 23176 Appendix B. Imported ABNF . . . . . . . . . . . . . . . . . . . . 24177 Appendix C. Collected ABNF . . . . . . . . . . . . . . . . . . . 24178 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25179 180 181 99 Section 2., paragraph 1: 182 100 OLD: … … 186 104 modification dates (Section 2.2) and opaque entity tags 187 105 (Section 2.3). Additional metadata that reflects resource state has 188 been defined by various extensions of HTTP, such as Web DAV [RFC4918],189 that are beyond the scope of this specification. A resource metadata190 value is referred to as a "validator" when it is used within a191 precondition.106 been defined by various extensions of HTTP, such as Web Distributed 107 Authoring and Versioning (WebDAV, [RFC4918]), that are beyond the 108 scope of this specification. A resource metadata value is referred 109 to as a "validator" when it is used within a precondition. 192 110 193 111 NEW: … … 267 185 268 186 269 Section 2.2.2., paragraph 12:270 OLD:271 272 This method relies on the fact that if two different responses were273 sent by the origin server during the same second, but both had the274 same Last-Modified time, then at least one of those responses would275 have a Date value equal to its Last-Modified time. The arbitrary 60-276 second limit guards against the possibility that the Date and Last-277 Modified values are generated from different clocks, or at somewhat278 different times during the preparation of the response. An279 implementation MAY use a value larger than 60 seconds, if it is280 believed that 60 seconds is too short.281 282 NEW:283 284 This method relies on the fact that if two different responses were285 sent by the origin server during the same second, but both had the286 same Last-Modified time, then at least one of those responses would287 have a Date value equal to its Last-Modified time. The arbitrary 60-288 second limit guards against the possibility that the Date and Last-289 Modified values are generated from different clocks or at somewhat290 different times during the preparation of the response. An291 implementation MAY use a value larger than 60 seconds, if it is292 believed that 60 seconds is too short.293 294 295 Section 2.3., paragraph 4:296 OLD:297 298 Note: Previously, opaque-tag was defined to be a quoted-string299 ([RFC2616], Section 3.11), thus some recipients might perform300 backslash unescaping. Servers therefore ought to avoid backslash301 characters in entity tags.302 303 NEW:304 305 Note: Previously, opaque-tag was defined to be a quoted-string306 ([RFC2616], Section 3.11); thus, some recipients might perform307 backslash unescaping. Servers therefore ought to avoid backslash308 characters in entity tags.309 310 311 Section 2.3.1., paragraph 3:312 OLD:313 314 An origin server SHOULD send ETag for any selected representation for315 which detection of changes can be reasonably and consistently316 determined, since the entity-tag's use in conditional requests and317 evaluating cache freshness ([RFC7234]) can result in a substantial318 reduction of HTTP network traffic and can be a significant factor in319 improving service scalability and reliability.320 321 NEW:322 323 An origin server SHOULD send an ETag for any selected representation324 for which detection of changes can be reasonably and consistently325 determined, since the entity-tag's use in conditional requests and326 evaluating cache freshness ([RFC7234]) can result in a substantial327 reduction of HTTP network traffic and can be a significant factor in328 improving service scalability and reliability.329 330 331 Section 2.3.2., paragraph 1:332 OLD:333 334 There are two entity-tag comparison functions, depending on whether335 the comparison context allows the use of weak validators or not:336 337 NEW:338 339 There are two entity-tag comparison functions, depending on whether340 or not the comparison context allows the use of weak validators:341 342 343 Section 2.3.2., paragraph 4:344 OLD:345 346 The example below shows the results for a set of entity-tag pairs,347 and both the weak and strong comparison function results:348 349 NEW:350 351 The example below shows the results for a set of entity-tag pairs and352 both the weak and strong comparison function results:353 354 355 Section 2.3.2., paragraph 6:356 OLD:357 358 2.3.3. Example: Entity-tags Varying on Content-Negotiated Resources359 360 NEW:361 362 2.3.3. Example: Entity-Tags Varying on Content-Negotiated Resources363 364 365 Section 3.4, paragraph 12:366 OLD:367 368 2.4. When to Use Entity-tags and Last-Modified Dates369 370 NEW:371 372 2.4. When to Use Entity-Tags and Last-Modified Dates373 374 375 187 Section 3.1., paragraph 8: 376 188 OLD: 377 189 378 190 An origin server MUST NOT perform the requested method if a received 379 If-Match condition evaluates to false; instead the origin server MUST380 respond with either: a) the 412 (Precondition Failed) status code;381 or ,b) one of the 2xx (Successful) status codes if the origin server191 If-Match condition evaluates to false; instead, the origin server 192 MUST respond with either a) the 412 (Precondition Failed) status code 193 or b) one of the 2xx (Successful) status codes if the origin server 382 194 has verified that a state change is being requested and the final 383 195 state is already reflected in the current state of the target … … 407 219 408 220 409 Section 304, paragraph 3: 410 OLD: 411 412 An origin server MUST NOT perform the requested method if the 413 condition evaluates to false; instead, the origin server MUST respond 414 with either a) the 304 (Not Modified) status code if the request 415 method is GET or HEAD; or, b) the 412 (Precondition Failed) status 416 code for all other request methods. 417 418 NEW: 419 420 An origin server MUST NOT perform the requested method if the 421 condition evaluates to false; instead, the origin server MUST respond 422 with either a) the 304 (Not Modified) status code if the request 423 method is GET or HEAD or b) the 412 (Precondition Failed) status code 424 for all other request methods. 425 426 427 Section 3.3., paragraph 8: 428 OLD: 429 430 If-Modified-Since is typically used for two distinct purposes: 1) to 431 allow efficient updates of a cached representation that does not have 432 an entity-tag; and, 2) to limit the scope of a web traversal to 433 resources that have recently changed. 434 435 NEW: 436 437 If-Modified-Since is typically used for two distinct purposes: 1) to 438 allow efficient updates of a cached representation that does not have 439 an entity-tag and 2) to limit the scope of a web traversal to 440 resources that have recently changed. 441 442 443 Section 3.4., paragraph 5: 444 OLD: 445 446 A recipient MUST ignore If-Unmodified-Since if the request contains 447 an If-Match header field; the condition in If-Match is considered to 448 be a more accurate replacement for the condition in If-Unmodified- 449 Since and the two are only combined for the sake of interoperating 450 with older intermediaries that might not implement If-Match. 451 452 NEW: 453 454 A recipient MUST ignore If-Unmodified-Since if the request contains 455 an If-Match header field; the condition in If-Match is considered to 456 be a more accurate replacement for the condition in If-Unmodified- 457 Since, and the two are only combined for the sake of interoperating 458 with older intermediaries that might not implement If-Match. 459 460 461 Section 3.4., paragraph 9: 462 OLD: 463 464 An origin server that receives an If-Unmodified-Since header field 465 MUST evaluate the condition prior to performing the method 466 (Section 5). The origin server MUST NOT perform the requested method 467 if the selected representation's last modification date is more 468 recent than the date provided in the field-value; instead the origin 469 server MUST respond with either: a) the 412 (Precondition Failed) 470 status code; or, b) one of the 2xx (Successful) status codes if the 471 origin server has verified that a state change is being requested and 472 the final state is already reflected in the current state of the 473 target resource (i.e., the change requested by the user agent has 474 already succeeded, but the user agent might not be aware of that 475 because the prior response message was lost or a compatible change 476 was made by some other user agent). In the latter case, the origin 477 server MUST NOT send a validator header field in the response unless 478 it can verify that the request is a duplicate of an immediately prior 479 change made by the same user agent. 480 481 NEW: 482 483 An origin server that receives an If-Unmodified-Since header field 484 MUST evaluate the condition prior to performing the method 485 (Section 5). The origin server MUST NOT perform the requested method 486 if the selected representation's last modification date is more 487 recent than the date provided in the field-value; instead the origin 488 server MUST respond with either a) the 412 (Precondition Failed) 489 status code or b) one of the 2xx (Successful) status codes if the 490 origin server has verified that a state change is being requested and 491 the final state is already reflected in the current state of the 492 target resource (i.e., the change requested by the user agent has 493 already succeeded, but the user agent might not be aware of that 494 because the prior response message was lost or a compatible change 495 was made by some other user agent). In the latter case, the origin 496 server MUST NOT send a validator header field in the response unless 497 it can verify that the request is a duplicate of an immediately prior 498 change made by the same user agent. 221 Section 3.3., paragraph 5: 222 OLD: 223 224 A recipient MUST ignore If-Modified-Since if the request contains an 225 If-None-Match header field; the condition in If-None-Match is 226 considered to be a more accurate replacement for the condition in If- 227 Modified-Since, and the two are only combined for the sake of 228 interoperating with older intermediaries that might not implement If- 229 None-Match. 230 231 NEW: 232 233 A recipient MUST ignore If-Modified-Since if the request contains an 234 If-None-Match header field; the condition in If-None-Match is 235 considered to be a more accurate replacement for the condition in If- 236 Modified-Since and the two are only combined for the sake of 237 interoperating with older intermediaries that might not implement If- 238 None-Match. 499 239 500 240 … … 504 244 The "If-Range" header field provides a special conditional request 505 245 mechanism that is similar to the If-Match and If-Unmodified-Since 506 header fields but instructs the recipient to ignore the Range header507 field if the validator doesn't match, resulting in transfer of the508 new selected representation instead of a 412 response. If-Range is509 defined in Section 3.2 of [RFC7233].246 header fields but that instructs the recipient to ignore the Range 247 header field if the validator doesn't match, resulting in transfer of 248 the new selected representation instead of a 412 response. If-Range 249 is defined in Section 3.2 of [RFC7233]. 510 250 511 251 NEW: … … 519 259 520 260 521 Section 4.1., paragraph 1:522 OLD:523 524 The 304 (Not Modified) status code indicates that a conditional GET525 or HEAD request has been received and would have resulted in a 200526 (OK) response if it were not for the fact that the condition has527 evaluated to false. In other words, there is no need for the server528 to transfer a representation of the target resource because the529 request indicates that the client, which made the request530 conditional, already has a valid representation; the server is531 therefore redirecting the client to make use of that stored532 representation as if it were the payload of a 200 (OK) response.533 534 NEW:535 536 The 304 (Not Modified) status code indicates that a conditional GET537 or HEAD request has been received and would have resulted in a 200538 (OK) response if it were not for the fact that the condition539 evaluated to false. In other words, there is no need for the server540 to transfer a representation of the target resource because the541 request indicates that the client, which made the request542 conditional, already has a valid representation; the server is543 therefore redirecting the client to make use of that stored544 representation as if it were the payload of a 200 (OK) response.545 546 547 261 Section 4.1., paragraph 2: 548 262 OLD: … … 609 323 A 304 (Not Modified) response cannot contain a message-body; it is 610 324 always terminated by the first empty line after the header fields. 611 612 613 Section 4.2., paragraph 1:614 OLD:615 616 The 412 (Precondition Failed) status code indicates that one or more617 conditions given in the request header fields evaluated to false when618 tested on the server. This response code allows the client to place619 preconditions on the current resource state (its current620 representations and metadata) and thus prevent the request method621 from being applied if the target resource is in an unexpected state.622 623 NEW:624 625 The 412 (Precondition Failed) status code indicates that one or more626 conditions given in the request header fields evaluated to false when627 tested on the server. This response code allows the client to place628 preconditions on the current resource state (its current629 representations and metadata) and, thus, prevent the request method630 from being applied if the target resource is in an unexpected state.631 325 632 326 -
draft-ietf-httpbis/latest/auth48/rfc7232.diff.html
r2668 r2669 104 104 <tr><td class="lineno" valign="top"></td><td class="left"> publication of this document. Please review these documents</td><td> </td><td class="right"> publication of this document. Please review these documents</td><td class="lineno" valign="top"></td></tr> 105 105 <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr> 106 <tr bgcolor="gray" ><td></td><th><a name="part-l2" /><small>skipping to change at</small><em> page 3, line 18</em></th><th> </th><th><a name="part-r2" /><small>skipping to change at</small><em> page 3, line 18</em></th><td></td></tr> 107 <tr><td class="lineno" valign="top"></td><td class="left"> 1.1. Conformance and Error Handling . . . . . . . . . . . . . . 4</td><td> </td><td class="right"> 1.1. Conformance and Error Handling . . . . . . . . . . . . . . 4</td><td class="lineno" valign="top"></td></tr> 108 <tr><td class="lineno" valign="top"></td><td class="left"> 1.2. Syntax Notation . . . . . . . . . . . . . . . . . . . . . 4</td><td> </td><td class="right"> 1.2. Syntax Notation . . . . . . . . . . . . . . . . . . . . . 4</td><td class="lineno" valign="top"></td></tr> 109 <tr><td class="lineno" valign="top"></td><td class="left"> 2. Validators . . . . . . . . . . . . . . . . . . . . . . . . . . 5</td><td> </td><td class="right"> 2. Validators . . . . . . . . . . . . . . . . . . . . . . . . . . 5</td><td class="lineno" valign="top"></td></tr> 110 <tr><td class="lineno" valign="top"></td><td class="left"> 2.1. Weak versus Strong . . . . . . . . . . . . . . . . . . . . 5</td><td> </td><td class="right"> 2.1. Weak versus Strong . . . . . . . . . . . . . . . . . . . . 5</td><td class="lineno" valign="top"></td></tr> 111 <tr><td class="lineno" valign="top"></td><td class="left"> 2.2. Last-Modified . . . . . . . . . . . . . . . . . . . . . . 7</td><td> </td><td class="right"> 2.2. Last-Modified . . . . . . . . . . . . . . . . . . . . . . 7</td><td class="lineno" valign="top"></td></tr> 112 <tr><td class="lineno" valign="top"></td><td class="left"> 2.2.1. Generation . . . . . . . . . . . . . . . . . . . . . . 7</td><td> </td><td class="right"> 2.2.1. Generation . . . . . . . . . . . . . . . . . . . . . . 7</td><td class="lineno" valign="top"></td></tr> 113 <tr><td class="lineno" valign="top"></td><td class="left"> 2.2.2. Comparison . . . . . . . . . . . . . . . . . . . . . . 8</td><td> </td><td class="right"> 2.2.2. Comparison . . . . . . . . . . . . . . . . . . . . . . 8</td><td class="lineno" valign="top"></td></tr> 114 <tr><td class="lineno" valign="top"></td><td class="left"> 2.3. ETag . . . . . . . . . . . . . . . . . . . . . . . . . . . 9</td><td> </td><td class="right"> 2.3. ETag . . . . . . . . . . . . . . . . . . . . . . . . . . . 9</td><td class="lineno" valign="top"></td></tr> 115 <tr><td class="lineno" valign="top"></td><td class="left"> 2.3.1. Generation . . . . . . . . . . . . . . . . . . . . . . 10</td><td> </td><td class="right"> 2.3.1. Generation . . . . . . . . . . . . . . . . . . . . . . 10</td><td class="lineno" valign="top"></td></tr> 116 <tr><td class="lineno" valign="top"></td><td class="left"> 2.3.2. Comparison . . . . . . . . . . . . . . . . . . . . . . 10</td><td> </td><td class="right"> 2.3.2. Comparison . . . . . . . . . . . . . . . . . . . . . . 10</td><td class="lineno" valign="top"></td></tr> 117 <tr><td><a name="diff0007" /></td></tr> 118 <tr><td class="lineno" valign="top"></td><td class="lblock"> 2.3.3. Example: Entity-<span class="delete">t</span>ags Varying on Content-Negotiated</td><td> </td><td class="rblock"> 2.3.3. Example: Entity-<span class="insert">T</span>ags Varying on Content-Negotiated</td><td class="lineno" valign="top"></td></tr> 119 <tr><td class="lineno" valign="top"></td><td class="left"> Resources . . . . . . . . . . . . . . . . . . . . . . 11</td><td> </td><td class="right"> Resources . . . . . . . . . . . . . . . . . . . . . . 11</td><td class="lineno" valign="top"></td></tr> 120 <tr><td><a name="diff0008" /></td></tr> 121 <tr><td class="lineno" valign="top"></td><td class="lblock"> 2.4. When to Use Entity-<span class="delete">t</span>ags and Last-Modified Dates . . . . . 12</td><td> </td><td class="rblock"> 2.4. When to Use Entity-<span class="insert">T</span>ags and Last-Modified Dates . . . . . 12</td><td class="lineno" valign="top"></td></tr> 122 <tr><td class="lineno" valign="top"></td><td class="left"> 3. Precondition Header Fields . . . . . . . . . . . . . . . . . . 13</td><td> </td><td class="right"> 3. Precondition Header Fields . . . . . . . . . . . . . . . . . . 13</td><td class="lineno" valign="top"></td></tr> 123 <tr><td class="lineno" valign="top"></td><td class="left"> 3.1. If-Match . . . . . . . . . . . . . . . . . . . . . . . . . 13</td><td> </td><td class="right"> 3.1. If-Match . . . . . . . . . . . . . . . . . . . . . . . . . 13</td><td class="lineno" valign="top"></td></tr> 124 <tr><td class="lineno" valign="top"></td><td class="left"> 3.2. If-None-Match . . . . . . . . . . . . . . . . . . . . . . 14</td><td> </td><td class="right"> 3.2. If-None-Match . . . . . . . . . . . . . . . . . . . . . . 14</td><td class="lineno" valign="top"></td></tr> 125 <tr><td class="lineno" valign="top"></td><td class="left"> 3.3. If-Modified-Since . . . . . . . . . . . . . . . . . . . . 15</td><td> </td><td class="right"> 3.3. If-Modified-Since . . . . . . . . . . . . . . . . . . . . 15</td><td class="lineno" valign="top"></td></tr> 126 <tr><td class="lineno" valign="top"></td><td class="left"> 3.4. If-Unmodified-Since . . . . . . . . . . . . . . . . . . . 16</td><td> </td><td class="right"> 3.4. If-Unmodified-Since . . . . . . . . . . . . . . . . . . . 16</td><td class="lineno" valign="top"></td></tr> 127 <tr><td class="lineno" valign="top"></td><td class="left"> 3.5. If-Range . . . . . . . . . . . . . . . . . . . . . . . . . 18</td><td> </td><td class="right"> 3.5. If-Range . . . . . . . . . . . . . . . . . . . . . . . . . 18</td><td class="lineno" valign="top"></td></tr> 128 <tr><td class="lineno" valign="top"></td><td class="left"> 4. Status Code Definitions . . . . . . . . . . . . . . . . . . . 18</td><td> </td><td class="right"> 4. Status Code Definitions . . . . . . . . . . . . . . . . . . . 18</td><td class="lineno" valign="top"></td></tr> 129 <tr><td class="lineno" valign="top"></td><td class="left"> 4.1. 304 Not Modified . . . . . . . . . . . . . . . . . . . . . 18</td><td> </td><td class="right"> 4.1. 304 Not Modified . . . . . . . . . . . . . . . . . . . . . 18</td><td class="lineno" valign="top"></td></tr> 130 <tr><td class="lineno" valign="top"></td><td class="left"> 4.2. 412 Precondition Failed . . . . . . . . . . . . . . . . . 18</td><td> </td><td class="right"> 4.2. 412 Precondition Failed . . . . . . . . . . . . . . . . . 18</td><td class="lineno" valign="top"></td></tr> 131 <tr><td class="lineno" valign="top"></td><td class="left"> 5. Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . 19</td><td> </td><td class="right"> 5. Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . 19</td><td class="lineno" valign="top"></td></tr> 132 <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr> 133 <tr bgcolor="gray" ><td></td><th><a name="part-l3" /><small>skipping to change at</small><em> page 5, line 12</em></th><th> </th><th><a name="part-r3" /><small>skipping to change at</small><em> page 5, line 12</em></th><td></td></tr> 134 <tr><td class="lineno" valign="top"></td><td class="left"> repetition). Appendix B describes rules imported from other</td><td> </td><td class="right"> repetition). Appendix B describes rules imported from other</td><td class="lineno" valign="top"></td></tr> 106 <tr bgcolor="gray" ><td></td><th><a name="part-l2" /><small>skipping to change at</small><em> page 5, line 13</em></th><th> </th><th><a name="part-r2" /><small>skipping to change at</small><em> page 5, line 13</em></th><td></td></tr> 135 107 <tr><td class="lineno" valign="top"></td><td class="left"> documents. Appendix C shows the collected grammar with all list</td><td> </td><td class="right"> documents. Appendix C shows the collected grammar with all list</td><td class="lineno" valign="top"></td></tr> 136 108 <tr><td class="lineno" valign="top"></td><td class="left"> operators expanded to standard ABNF notation.</td><td> </td><td class="right"> operators expanded to standard ABNF notation.</td><td class="lineno" valign="top"></td></tr> … … 142 114 <tr><td class="lineno" valign="top"></td><td class="left"> modification dates (Section 2.2) and opaque entity tags</td><td> </td><td class="right"> modification dates (Section 2.2) and opaque entity tags</td><td class="lineno" valign="top"></td></tr> 143 115 <tr><td class="lineno" valign="top"></td><td class="left"> (Section 2.3). Additional metadata that reflects resource state has</td><td> </td><td class="right"> (Section 2.3). Additional metadata that reflects resource state has</td><td class="lineno" valign="top"></td></tr> 144 <tr><td ><a name="diff0009" /></td></tr>145 <tr><td class="lineno" valign="top"></td><td class="lblock"> been defined by various extensions of HTTP, such as <span class="delete">WebDAV</span> [RFC4918],</td><td> </td><td class="rblock"> been defined by various extensions of HTTP, such as <span class="insert">Web Distributed</span></td><td class="lineno" valign="top"></td></tr>146 <tr><td class="lineno" valign="top"></td><td class="lblock"> that are beyond the scope of this specification. A resource metadata</td><td> </td><td class="rblock"><span class="insert"> Authoring and Versioning (WebDAV)</span> [RFC4918], that are beyond the</td><td class="lineno" valign="top"></td></tr>147 <tr><td class="lineno" valign="top"></td><td class="l block"> value is referred to as a "validator" when it is used within a</td><td> </td><td class="rblock"> scope of this specification. A resource metadata value is referred</td><td class="lineno" valign="top"></td></tr>148 <tr><td class="lineno" valign="top"></td><td class="l block"> precondition.</td><td> </td><td class="rblock"> to as a "validator" when it is used within a precondition.</td><td class="lineno" valign="top"></td></tr>116 <tr><td class="lineno" valign="top"></td><td class="left"> been defined by various extensions of HTTP, such as Web Distributed</td><td> </td><td class="right"> been defined by various extensions of HTTP, such as Web Distributed</td><td class="lineno" valign="top"></td></tr> 117 <tr><td><a name="diff0007" /></td></tr> 118 <tr><td class="lineno" valign="top"></td><td class="lblock"> Authoring and Versioning (WebDAV<span class="delete">, [RFC4918])</span>, that are beyond the</td><td> </td><td class="rblock"> Authoring and Versioning (WebDAV<span class="insert">) [RFC4918]</span>, that are beyond the</td><td class="lineno" valign="top"></td></tr> 119 <tr><td class="lineno" valign="top"></td><td class="left"> scope of this specification. A resource metadata value is referred</td><td> </td><td class="right"> scope of this specification. A resource metadata value is referred</td><td class="lineno" valign="top"></td></tr> 120 <tr><td class="lineno" valign="top"></td><td class="left"> to as a "validator" when it is used within a precondition.</td><td> </td><td class="right"> to as a "validator" when it is used within a precondition.</td><td class="lineno" valign="top"></td></tr> 149 121 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 150 122 <tr><td class="lineno" valign="top"></td><td class="left">2.1. Weak versus Strong</td><td> </td><td class="right">2.1. Weak versus Strong</td><td class="lineno" valign="top"></td></tr> … … 165 137 <tr><td class="lineno" valign="top"></td><td class="left"> the representation data, such as when a semantically significant part</td><td> </td><td class="right"> the representation data, such as when a semantically significant part</td><td class="lineno" valign="top"></td></tr> 166 138 <tr><td class="lineno" valign="top"></td><td class="left"> of the representation metadata is changed (e.g., Content-Type), but</td><td> </td><td class="right"> of the representation metadata is changed (e.g., Content-Type), but</td><td class="lineno" valign="top"></td></tr> 167 <tr><td><a name="diff00 10" /></td></tr>139 <tr><td><a name="diff0008" /></td></tr> 168 140 <tr><td class="lineno" valign="top"></td><td class="lblock"> it is in the best interests of the origin server to <span class="delete">only change</span> the</td><td> </td><td class="rblock"> it is in the best interests of the origin server to <span class="insert">change only</span> the</td><td class="lineno" valign="top"></td></tr> 169 141 <tr><td class="lineno" valign="top"></td><td class="left"> value when it is necessary to invalidate the stored responses held by</td><td> </td><td class="right"> value when it is necessary to invalidate the stored responses held by</td><td class="lineno" valign="top"></td></tr> … … 178 150 <tr><td class="lineno" valign="top"></td><td class="left"> resources (i.e., the same strong validator might be in use for</td><td> </td><td class="right"> resources (i.e., the same strong validator might be in use for</td><td class="lineno" valign="top"></td></tr> 179 151 <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr> 180 <tr bgcolor="gray" ><td></td><th><a name="part-l 4" /><small>skipping to change at</small><em> page 6, line 17</em></th><th> </th><th><a name="part-r4" /><small>skipping to change at</small><em> page 6, line 17</em></th><td></td></tr>152 <tr bgcolor="gray" ><td></td><th><a name="part-l3" /><small>skipping to change at</small><em> page 6, line 17</em></th><th> </th><th><a name="part-r3" /><small>skipping to change at</small><em> page 6, line 17</em></th><td></td></tr> 181 153 <tr><td class="lineno" valign="top"></td><td class="left"> not need to be recalculated every time a validation request is</td><td> </td><td class="right"> not need to be recalculated every time a validation request is</td><td class="lineno" valign="top"></td></tr> 182 154 <tr><td class="lineno" valign="top"></td><td class="left"> received. However, if a resource has distinct representations that</td><td> </td><td class="right"> received. However, if a resource has distinct representations that</td><td class="lineno" valign="top"></td></tr> … … 189 161 <tr><td class="lineno" valign="top"></td><td class="left"> not change for every change to the representation data. This</td><td> </td><td class="right"> not change for every change to the representation data. This</td><td class="lineno" valign="top"></td></tr> 190 162 <tr><td class="lineno" valign="top"></td><td class="left"> weakness might be due to limitations in how the value is calculated,</td><td> </td><td class="right"> weakness might be due to limitations in how the value is calculated,</td><td class="lineno" valign="top"></td></tr> 191 <tr><td><a name="diff00 11" /></td></tr>163 <tr><td><a name="diff0009" /></td></tr> 192 164 <tr><td class="lineno" valign="top"></td><td class="lblock"> such as clock <span class="delete">resolution or</span> an inability to ensure uniqueness for all</td><td> </td><td class="rblock"> such as clock <span class="insert">resolution,</span> an inability to ensure uniqueness for all</td><td class="lineno" valign="top"></td></tr> 193 165 <tr><td class="lineno" valign="top"></td><td class="lblock"> possible representations of the resource, or <span class="delete">due to</span> a desire <span class="delete">by</span> the</td><td> </td><td class="rblock"> possible representations of the resource, or a desire <span class="insert">of</span> the resource</td><td class="lineno" valign="top"></td></tr> … … 206 178 <tr><td class="lineno" valign="top"></td><td class="left"> adjusted dynamically based on server load or weather quality).</td><td> </td><td class="right"> adjusted dynamically based on server load or weather quality).</td><td class="lineno" valign="top"></td></tr> 207 179 <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr> 208 <tr bgcolor="gray" ><td></td><th><a name="part-l 5" /><small>skipping to change at</small><em> page 8, line 25</em></th><th> </th><th><a name="part-r5" /><small>skipping to change at</small><em> page 8, line 25</em></th><td></td></tr>180 <tr bgcolor="gray" ><td></td><th><a name="part-l4" /><small>skipping to change at</small><em> page 8, line 25</em></th><th> </th><th><a name="part-r4" /><small>skipping to change at</small><em> page 8, line 25</em></th><td></td></tr> 209 181 <tr><td class="lineno" valign="top"></td><td class="left"> o The validator is being compared by an origin server to the actual</td><td> </td><td class="right"> o The validator is being compared by an origin server to the actual</td><td class="lineno" valign="top"></td></tr> 210 182 <tr><td class="lineno" valign="top"></td><td class="left"> current validator for the representation and,</td><td> </td><td class="right"> current validator for the representation and,</td><td class="lineno" valign="top"></td></tr> … … 217 189 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 218 190 <tr><td class="lineno" valign="top"></td><td class="left"> o The validator is about to be used by a client in an If-Modified-</td><td> </td><td class="right"> o The validator is about to be used by a client in an If-Modified-</td><td class="lineno" valign="top"></td></tr> 219 <tr><td><a name="diff001 2" /></td></tr>191 <tr><td><a name="diff0010" /></td></tr> 220 192 <tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">Since,</span> If-Unmodified-Since header field, because the client has a</td><td> </td><td class="rblock"> <span class="insert">Since or</span> If-Unmodified-Since header field, because the client has</td><td class="lineno" valign="top"></td></tr> 221 193 <tr><td class="lineno" valign="top"></td><td class="lblock"> cache entry, or If-Range for the associated representation, and</td><td> </td><td class="rblock"> a cache entry, or If-Range for the associated representation, and</td><td class="lineno" valign="top"></td></tr> … … 231 203 <tr><td class="lineno" valign="top"></td><td class="left"> o The validator is being compared by an intermediate cache to the</td><td> </td><td class="right"> o The validator is being compared by an intermediate cache to the</td><td class="lineno" valign="top"></td></tr> 232 204 <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr> 233 <tr bgcolor="gray" ><td></td><th><a name="part-l6" /><small>skipping to change at</small><em> page 8, line 50</em></th><th> </th><th><a name="part-r6" /><small>skipping to change at</small><em> page 8, line 50</em></th><td></td></tr> 234 <tr><td class="lineno" valign="top"></td><td class="left"> the origin server sent the original response, and</td><td> </td><td class="right"> the origin server sent the original response, and</td><td class="lineno" valign="top"></td></tr> 235 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 236 <tr><td class="lineno" valign="top"></td><td class="left"> o The presented Last-Modified time is at least 60 seconds before the</td><td> </td><td class="right"> o The presented Last-Modified time is at least 60 seconds before the</td><td class="lineno" valign="top"></td></tr> 237 <tr><td class="lineno" valign="top"></td><td class="left"> Date value.</td><td> </td><td class="right"> Date value.</td><td class="lineno" valign="top"></td></tr> 238 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 239 <tr><td class="lineno" valign="top"></td><td class="left"> This method relies on the fact that if two different responses were</td><td> </td><td class="right"> This method relies on the fact that if two different responses were</td><td class="lineno" valign="top"></td></tr> 240 <tr><td class="lineno" valign="top"></td><td class="left"> sent by the origin server during the same second, but both had the</td><td> </td><td class="right"> sent by the origin server during the same second, but both had the</td><td class="lineno" valign="top"></td></tr> 241 <tr><td class="lineno" valign="top"></td><td class="left"> same Last-Modified time, then at least one of those responses would</td><td> </td><td class="right"> same Last-Modified time, then at least one of those responses would</td><td class="lineno" valign="top"></td></tr> 242 <tr><td class="lineno" valign="top"></td><td class="left"> have a Date value equal to its Last-Modified time. The arbitrary 60-</td><td> </td><td class="right"> have a Date value equal to its Last-Modified time. The arbitrary 60-</td><td class="lineno" valign="top"></td></tr> 243 <tr><td class="lineno" valign="top"></td><td class="left"> second limit guards against the possibility that the Date and Last-</td><td> </td><td class="right"> second limit guards against the possibility that the Date and Last-</td><td class="lineno" valign="top"></td></tr> 244 <tr><td><a name="diff0013" /></td></tr> 245 <tr><td class="lineno" valign="top"></td><td class="lblock"> Modified values are generated from different clocks<span class="delete">,</span> or at somewhat</td><td> </td><td class="rblock"> Modified values are generated from different clocks or at somewhat</td><td class="lineno" valign="top"></td></tr> 246 <tr><td class="lineno" valign="top"></td><td class="left"> different times during the preparation of the response. An</td><td> </td><td class="right"> different times during the preparation of the response. An</td><td class="lineno" valign="top"></td></tr> 247 <tr><td class="lineno" valign="top"></td><td class="left"> implementation MAY use a value larger than 60 seconds, if it is</td><td> </td><td class="right"> implementation MAY use a value larger than 60 seconds, if it is</td><td class="lineno" valign="top"></td></tr> 248 <tr><td class="lineno" valign="top"></td><td class="left"> believed that 60 seconds is too short.</td><td> </td><td class="right"> believed that 60 seconds is too short.</td><td class="lineno" valign="top"></td></tr> 249 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 250 <tr><td class="lineno" valign="top"></td><td class="left">2.3. ETag</td><td> </td><td class="right">2.3. ETag</td><td class="lineno" valign="top"></td></tr> 251 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 252 <tr><td class="lineno" valign="top"></td><td class="left"> The "ETag" header field in a response provides the current entity-tag</td><td> </td><td class="right"> The "ETag" header field in a response provides the current entity-tag</td><td class="lineno" valign="top"></td></tr> 253 <tr><td class="lineno" valign="top"></td><td class="left"> for the selected representation, as determined at the conclusion of</td><td> </td><td class="right"> for the selected representation, as determined at the conclusion of</td><td class="lineno" valign="top"></td></tr> 254 <tr><td class="lineno" valign="top"></td><td class="left"> handling the request. An entity-tag is an opaque validator for</td><td> </td><td class="right"> handling the request. An entity-tag is an opaque validator for</td><td class="lineno" valign="top"></td></tr> 255 <tr><td class="lineno" valign="top"></td><td class="left"> differentiating between multiple representations of the same</td><td> </td><td class="right"> differentiating between multiple representations of the same</td><td class="lineno" valign="top"></td></tr> 256 <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr> 257 <tr bgcolor="gray" ><td></td><th><a name="part-l7" /><small>skipping to change at</small><em> page 9, line 27</em></th><th> </th><th><a name="part-r7" /><small>skipping to change at</small><em> page 9, line 27</em></th><td></td></tr> 258 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 259 <tr><td class="lineno" valign="top"></td><td class="left"> ETag = entity-tag</td><td> </td><td class="right"> ETag = entity-tag</td><td class="lineno" valign="top"></td></tr> 260 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 261 <tr><td class="lineno" valign="top"></td><td class="left"> entity-tag = [ weak ] opaque-tag</td><td> </td><td class="right"> entity-tag = [ weak ] opaque-tag</td><td class="lineno" valign="top"></td></tr> 262 <tr><td class="lineno" valign="top"></td><td class="left"> weak = %x57.2F ; "W/", case-sensitive</td><td> </td><td class="right"> weak = %x57.2F ; "W/", case-sensitive</td><td class="lineno" valign="top"></td></tr> 263 <tr><td class="lineno" valign="top"></td><td class="left"> opaque-tag = DQUOTE *etagc DQUOTE</td><td> </td><td class="right"> opaque-tag = DQUOTE *etagc DQUOTE</td><td class="lineno" valign="top"></td></tr> 264 <tr><td class="lineno" valign="top"></td><td class="left"> etagc = %x21 / %x23-7E / obs-text</td><td> </td><td class="right"> etagc = %x21 / %x23-7E / obs-text</td><td class="lineno" valign="top"></td></tr> 265 <tr><td class="lineno" valign="top"></td><td class="left"> ; VCHAR except double quotes, plus obs-text</td><td> </td><td class="right"> ; VCHAR except double quotes, plus obs-text</td><td class="lineno" valign="top"></td></tr> 266 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 267 <tr><td class="lineno" valign="top"></td><td class="left"> Note: Previously, opaque-tag was defined to be a quoted-string</td><td> </td><td class="right"> Note: Previously, opaque-tag was defined to be a quoted-string</td><td class="lineno" valign="top"></td></tr> 268 <tr><td><a name="diff0014" /></td></tr> 269 <tr><td class="lineno" valign="top"></td><td class="lblock"> ([RFC2616], Section 3.11)<span class="delete">, thus</span> some recipients might perform</td><td> </td><td class="rblock"> ([RFC2616], Section 3.11)<span class="insert">; thus,</span> some recipients might perform</td><td class="lineno" valign="top"></td></tr> 270 <tr><td class="lineno" valign="top"></td><td class="left"> backslash unescaping. Servers therefore ought to avoid backslash</td><td> </td><td class="right"> backslash unescaping. Servers therefore ought to avoid backslash</td><td class="lineno" valign="top"></td></tr> 271 <tr><td class="lineno" valign="top"></td><td class="left"> characters in entity tags.</td><td> </td><td class="right"> characters in entity tags.</td><td class="lineno" valign="top"></td></tr> 272 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 273 <tr><td class="lineno" valign="top"></td><td class="left"> An entity-tag can be more reliable for validation than a modification</td><td> </td><td class="right"> An entity-tag can be more reliable for validation than a modification</td><td class="lineno" valign="top"></td></tr> 274 <tr><td class="lineno" valign="top"></td><td class="left"> date in situations where it is inconvenient to store modification</td><td> </td><td class="right"> date in situations where it is inconvenient to store modification</td><td class="lineno" valign="top"></td></tr> 275 <tr><td class="lineno" valign="top"></td><td class="left"> dates, where the one-second resolution of HTTP date values is not</td><td> </td><td class="right"> dates, where the one-second resolution of HTTP date values is not</td><td class="lineno" valign="top"></td></tr> 276 <tr><td class="lineno" valign="top"></td><td class="left"> sufficient, or where modification dates are not consistently</td><td> </td><td class="right"> sufficient, or where modification dates are not consistently</td><td class="lineno" valign="top"></td></tr> 277 <tr><td class="lineno" valign="top"></td><td class="left"> maintained.</td><td> </td><td class="right"> maintained.</td><td class="lineno" valign="top"></td></tr> 278 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 279 <tr><td class="lineno" valign="top"></td><td class="left"> Examples:</td><td> </td><td class="right"> Examples:</td><td class="lineno" valign="top"></td></tr> 280 <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr> 281 <tr bgcolor="gray" ><td></td><th><a name="part-l8" /><small>skipping to change at</small><em> page 10, line 22</em></th><th> </th><th><a name="part-r8" /><small>skipping to change at</small><em> page 10, line 22</em></th><td></td></tr> 282 <tr><td class="lineno" valign="top"></td><td class="left"> the client to be aware of how each entity-tag is constructed.</td><td> </td><td class="right"> the client to be aware of how each entity-tag is constructed.</td><td class="lineno" valign="top"></td></tr> 283 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 284 <tr><td class="lineno" valign="top"></td><td class="left"> For example, a resource that has implementation-specific versioning</td><td> </td><td class="right"> For example, a resource that has implementation-specific versioning</td><td class="lineno" valign="top"></td></tr> 285 <tr><td class="lineno" valign="top"></td><td class="left"> applied to all changes might use an internal revision number, perhaps</td><td> </td><td class="right"> applied to all changes might use an internal revision number, perhaps</td><td class="lineno" valign="top"></td></tr> 286 <tr><td class="lineno" valign="top"></td><td class="left"> combined with a variance identifier for content negotiation, to</td><td> </td><td class="right"> combined with a variance identifier for content negotiation, to</td><td class="lineno" valign="top"></td></tr> 287 <tr><td class="lineno" valign="top"></td><td class="left"> accurately differentiate between representations. Other</td><td> </td><td class="right"> accurately differentiate between representations. Other</td><td class="lineno" valign="top"></td></tr> 288 <tr><td class="lineno" valign="top"></td><td class="left"> implementations might use a collision-resistant hash of</td><td> </td><td class="right"> implementations might use a collision-resistant hash of</td><td class="lineno" valign="top"></td></tr> 289 <tr><td class="lineno" valign="top"></td><td class="left"> representation content, a combination of various file attributes, or</td><td> </td><td class="right"> representation content, a combination of various file attributes, or</td><td class="lineno" valign="top"></td></tr> 290 <tr><td class="lineno" valign="top"></td><td class="left"> a modification timestamp that has sub-second resolution.</td><td> </td><td class="right"> a modification timestamp that has sub-second resolution.</td><td class="lineno" valign="top"></td></tr> 291 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 292 <tr><td><a name="diff0015" /></td></tr> 293 <tr><td class="lineno" valign="top"></td><td class="lblock"> An origin server SHOULD send ETag for any selected representation for</td><td> </td><td class="rblock"> An origin server SHOULD send <span class="insert">an</span> ETag for any selected representation</td><td class="lineno" valign="top"></td></tr> 294 <tr><td class="lineno" valign="top"></td><td class="lblock"> which detection of changes can be reasonably and consistently</td><td> </td><td class="rblock"> for which detection of changes can be reasonably and consistently</td><td class="lineno" valign="top"></td></tr> 295 <tr><td class="lineno" valign="top"></td><td class="left"> determined, since the entity-tag's use in conditional requests and</td><td> </td><td class="right"> determined, since the entity-tag's use in conditional requests and</td><td class="lineno" valign="top"></td></tr> 296 <tr><td class="lineno" valign="top"></td><td class="left"> evaluating cache freshness ([RFC7234]) can result in a substantial</td><td> </td><td class="right"> evaluating cache freshness ([RFC7234]) can result in a substantial</td><td class="lineno" valign="top"></td></tr> 297 <tr><td class="lineno" valign="top"></td><td class="left"> reduction of HTTP network traffic and can be a significant factor in</td><td> </td><td class="right"> reduction of HTTP network traffic and can be a significant factor in</td><td class="lineno" valign="top"></td></tr> 298 <tr><td class="lineno" valign="top"></td><td class="left"> improving service scalability and reliability.</td><td> </td><td class="right"> improving service scalability and reliability.</td><td class="lineno" valign="top"></td></tr> 299 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 300 <tr><td class="lineno" valign="top"></td><td class="left">2.3.2. Comparison</td><td> </td><td class="right">2.3.2. Comparison</td><td class="lineno" valign="top"></td></tr> 301 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 302 <tr><td class="lineno" valign="top"></td><td class="left"> There are two entity-tag comparison functions, depending on whether</td><td> </td><td class="right"> There are two entity-tag comparison functions, depending on whether</td><td class="lineno" valign="top"></td></tr> 303 <tr><td><a name="diff0016" /></td></tr> 304 <tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">the comparison context allows the use of weak validators or not</span>:</td><td> </td><td class="rblock"> <span class="insert">or not the comparison context allows the use of weak validators</span>:</td><td class="lineno" valign="top"></td></tr> 305 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 306 <tr><td class="lineno" valign="top"></td><td class="left"> o Strong comparison: two entity-tags are equivalent if both are not</td><td> </td><td class="right"> o Strong comparison: two entity-tags are equivalent if both are not</td><td class="lineno" valign="top"></td></tr> 307 <tr><td class="lineno" valign="top"></td><td class="left"> weak and their opaque-tags match character-by-character.</td><td> </td><td class="right"> weak and their opaque-tags match character-by-character.</td><td class="lineno" valign="top"></td></tr> 308 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 309 <tr><td class="lineno" valign="top"></td><td class="left"> o Weak comparison: two entity-tags are equivalent if their opaque-</td><td> </td><td class="right"> o Weak comparison: two entity-tags are equivalent if their opaque-</td><td class="lineno" valign="top"></td></tr> 310 <tr><td class="lineno" valign="top"></td><td class="left"> tags match character-by-character, regardless of either or both</td><td> </td><td class="right"> tags match character-by-character, regardless of either or both</td><td class="lineno" valign="top"></td></tr> 311 <tr><td class="lineno" valign="top"></td><td class="left"> being tagged as "weak".</td><td> </td><td class="right"> being tagged as "weak".</td><td class="lineno" valign="top"></td></tr> 312 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 313 <tr><td><a name="diff0017" /></td></tr> 314 <tr><td class="lineno" valign="top"></td><td class="lblock"> The example below shows the results for a set of entity-tag <span class="delete">pairs,</span></td><td> </td><td class="rblock"> The example below shows the results for a set of entity-tag <span class="insert">pairs</span> and</td><td class="lineno" valign="top"></td></tr> 315 <tr><td class="lineno" valign="top"></td><td class="lblock"> and both the weak and strong comparison function results:</td><td> </td><td class="rblock"> both the weak and strong comparison function results:</td><td class="lineno" valign="top"></td></tr> 316 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 317 <tr><td class="lineno" valign="top"></td><td class="left"> +--------+--------+-------------------+-----------------+</td><td> </td><td class="right"> +--------+--------+-------------------+-----------------+</td><td class="lineno" valign="top"></td></tr> 318 <tr><td class="lineno" valign="top"></td><td class="left"> | ETag 1 | ETag 2 | Strong Comparison | Weak Comparison |</td><td> </td><td class="right"> | ETag 1 | ETag 2 | Strong Comparison | Weak Comparison |</td><td class="lineno" valign="top"></td></tr> 319 <tr><td class="lineno" valign="top"></td><td class="left"> +--------+--------+-------------------+-----------------+</td><td> </td><td class="right"> +--------+--------+-------------------+-----------------+</td><td class="lineno" valign="top"></td></tr> 320 <tr><td class="lineno" valign="top"></td><td class="left"> | W/"1" | W/"1" | no match | match |</td><td> </td><td class="right"> | W/"1" | W/"1" | no match | match |</td><td class="lineno" valign="top"></td></tr> 321 <tr><td class="lineno" valign="top"></td><td class="left"> | W/"1" | W/"2" | no match | no match |</td><td> </td><td class="right"> | W/"1" | W/"2" | no match | no match |</td><td class="lineno" valign="top"></td></tr> 322 <tr><td class="lineno" valign="top"></td><td class="left"> | W/"1" | "1" | no match | match |</td><td> </td><td class="right"> | W/"1" | "1" | no match | match |</td><td class="lineno" valign="top"></td></tr> 323 <tr><td class="lineno" valign="top"></td><td class="left"> | "1" | "1" | match | match |</td><td> </td><td class="right"> | "1" | "1" | match | match |</td><td class="lineno" valign="top"></td></tr> 324 <tr><td class="lineno" valign="top"></td><td class="left"> +--------+--------+-------------------+-----------------+</td><td> </td><td class="right"> +--------+--------+-------------------+-----------------+</td><td class="lineno" valign="top"></td></tr> 325 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 326 <tr><td><a name="diff0018" /></td></tr> 327 <tr><td class="lineno" valign="top"></td><td class="lblock">2.3.3. Example: Entity-<span class="delete">t</span>ags Varying on Content-Negotiated Resources</td><td> </td><td class="rblock">2.3.3. Example: Entity-<span class="insert">T</span>ags Varying on Content-Negotiated Resources</td><td class="lineno" valign="top"></td></tr> 328 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 329 <tr><td class="lineno" valign="top"></td><td class="left"> Consider a resource that is subject to content negotiation (Section</td><td> </td><td class="right"> Consider a resource that is subject to content negotiation (Section</td><td class="lineno" valign="top"></td></tr> 330 <tr><td class="lineno" valign="top"></td><td class="left"> 3.4 of [RFC7231]), and where the representations sent in response to</td><td> </td><td class="right"> 3.4 of [RFC7231]), and where the representations sent in response to</td><td class="lineno" valign="top"></td></tr> 331 <tr><td class="lineno" valign="top"></td><td class="left"> a GET request vary based on the Accept-Encoding request header field</td><td> </td><td class="right"> a GET request vary based on the Accept-Encoding request header field</td><td class="lineno" valign="top"></td></tr> 332 <tr><td class="lineno" valign="top"></td><td class="left"> (Section 5.3.4 of [RFC7231]):</td><td> </td><td class="right"> (Section 5.3.4 of [RFC7231]):</td><td class="lineno" valign="top"></td></tr> 333 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 334 <tr><td class="lineno" valign="top"></td><td class="left"> >> Request:</td><td> </td><td class="right"> >> Request:</td><td class="lineno" valign="top"></td></tr> 335 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 336 <tr><td class="lineno" valign="top"></td><td class="left"> GET /index HTTP/1.1</td><td> </td><td class="right"> GET /index HTTP/1.1</td><td class="lineno" valign="top"></td></tr> 337 <tr><td class="lineno" valign="top"></td><td class="left"> Host: www.example.com</td><td> </td><td class="right"> Host: www.example.com</td><td class="lineno" valign="top"></td></tr> 338 <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr> 339 <tr bgcolor="gray" ><td></td><th><a name="part-l9" /><small>skipping to change at</small><em> page 12, line 13</em></th><th> </th><th><a name="part-r9" /><small>skipping to change at</small><em> page 12, line 13</em></th><td></td></tr> 340 <tr><td class="lineno" valign="top"></td><td class="left"> ...binary data...</td><td> </td><td class="right"> ...binary data...</td><td class="lineno" valign="top"></td></tr> 341 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 342 <tr><td class="lineno" valign="top"></td><td class="left"> Note: Content codings are a property of the representation data,</td><td> </td><td class="right"> Note: Content codings are a property of the representation data,</td><td class="lineno" valign="top"></td></tr> 343 <tr><td class="lineno" valign="top"></td><td class="left"> so a strong entity-tag for a content-encoded representation has to</td><td> </td><td class="right"> so a strong entity-tag for a content-encoded representation has to</td><td class="lineno" valign="top"></td></tr> 344 <tr><td class="lineno" valign="top"></td><td class="left"> be distinct from the entity tag of an unencoded representation to</td><td> </td><td class="right"> be distinct from the entity tag of an unencoded representation to</td><td class="lineno" valign="top"></td></tr> 345 <tr><td class="lineno" valign="top"></td><td class="left"> prevent potential conflicts during cache updates and range</td><td> </td><td class="right"> prevent potential conflicts during cache updates and range</td><td class="lineno" valign="top"></td></tr> 346 <tr><td class="lineno" valign="top"></td><td class="left"> requests. In contrast, transfer codings (Section 4 of [RFC7230])</td><td> </td><td class="right"> requests. In contrast, transfer codings (Section 4 of [RFC7230])</td><td class="lineno" valign="top"></td></tr> 347 <tr><td class="lineno" valign="top"></td><td class="left"> apply only during message transfer and do not result in distinct</td><td> </td><td class="right"> apply only during message transfer and do not result in distinct</td><td class="lineno" valign="top"></td></tr> 348 <tr><td class="lineno" valign="top"></td><td class="left"> entity-tags.</td><td> </td><td class="right"> entity-tags.</td><td class="lineno" valign="top"></td></tr> 349 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 350 <tr><td><a name="diff0019" /></td></tr> 351 <tr><td class="lineno" valign="top"></td><td class="lblock">2.4. When to Use Entity-<span class="delete">t</span>ags and Last-Modified Dates</td><td> </td><td class="rblock">2.4. When to Use Entity-<span class="insert">T</span>ags and Last-Modified Dates</td><td class="lineno" valign="top"></td></tr> 352 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 353 <tr><td class="lineno" valign="top"></td><td class="left"> In 200 (OK) responses to GET or HEAD, an origin server:</td><td> </td><td class="right"> In 200 (OK) responses to GET or HEAD, an origin server:</td><td class="lineno" valign="top"></td></tr> 354 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 355 <tr><td class="lineno" valign="top"></td><td class="left"> o SHOULD send an entity-tag validator unless it is not feasible to</td><td> </td><td class="right"> o SHOULD send an entity-tag validator unless it is not feasible to</td><td class="lineno" valign="top"></td></tr> 356 <tr><td class="lineno" valign="top"></td><td class="left"> generate one.</td><td> </td><td class="right"> generate one.</td><td class="lineno" valign="top"></td></tr> 357 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 358 <tr><td class="lineno" valign="top"></td><td class="left"> o MAY send a weak entity-tag instead of a strong entity-tag, if</td><td> </td><td class="right"> o MAY send a weak entity-tag instead of a strong entity-tag, if</td><td class="lineno" valign="top"></td></tr> 359 <tr><td class="lineno" valign="top"></td><td class="left"> performance considerations support the use of weak entity-tags, or</td><td> </td><td class="right"> performance considerations support the use of weak entity-tags, or</td><td class="lineno" valign="top"></td></tr> 360 <tr><td class="lineno" valign="top"></td><td class="left"> if it is unfeasible to send a strong entity-tag.</td><td> </td><td class="right"> if it is unfeasible to send a strong entity-tag.</td><td class="lineno" valign="top"></td></tr> 361 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 362 <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr> 363 <tr bgcolor="gray" ><td></td><th><a name="part-l10" /><small>skipping to change at</small><em> page 13, line 50</em></th><th> </th><th><a name="part-r10" /><small>skipping to change at</small><em> page 13, line 50</em></th><td></td></tr> 364 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 205 <tr bgcolor="gray" ><td></td><th><a name="part-l5" /><small>skipping to change at</small><em> page 13, line 51</em></th><th> </th><th><a name="part-r5" /><small>skipping to change at</small><em> page 13, line 51</em></th><td></td></tr> 365 206 <tr><td class="lineno" valign="top"></td><td class="left"> An origin server that receives an If-Match header field MUST evaluate</td><td> </td><td class="right"> An origin server that receives an If-Match header field MUST evaluate</td><td class="lineno" valign="top"></td></tr> 366 207 <tr><td class="lineno" valign="top"></td><td class="left"> the condition prior to performing the method (Section 5). If the</td><td> </td><td class="right"> the condition prior to performing the method (Section 5). If the</td><td class="lineno" valign="top"></td></tr> … … 372 213 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 373 214 <tr><td class="lineno" valign="top"></td><td class="left"> An origin server MUST NOT perform the requested method if a received</td><td> </td><td class="right"> An origin server MUST NOT perform the requested method if a received</td><td class="lineno" valign="top"></td></tr> 374 <tr><td ><a name="diff0020" /></td></tr>375 <tr><td class="lineno" valign="top"></td><td class="lblock"> If-Match condition evaluates to false; <span class="delete">instead</span> the origin server MUST</td><td> </td><td class="rblock"> If-Match condition evaluates to false; <span class="insert">instead,</span> the origin server</td><td class="lineno" valign="top"></td></tr>376 <tr><td class="lineno" valign="top"></td><td class="lblock"> respond with either: a) the 412 (Precondition Failed) status <span class="delete">code;</span></td><td> </td><td class="rblock"> MUST respond with either:a) the 412 (Precondition Failed) status</td><td class="lineno" valign="top"></td></tr>377 <tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete"> or,</span> b) one of the 2xx (Successful) status codes if the origin server</td><td> </td><td class="rblock"> <span class="insert">code or</span>b) one of the 2xx (Successful) status codes if the origin</td><td class="lineno" valign="top"></td></tr>215 <tr><td class="lineno" valign="top"></td><td class="left"> If-Match condition evaluates to false; instead, the origin server</td><td> </td><td class="right"> If-Match condition evaluates to false; instead, the origin server</td><td class="lineno" valign="top"></td></tr> 216 <tr><td><a name="diff0011" /></td></tr> 217 <tr><td class="lineno" valign="top"></td><td class="lblock"> MUST respond with <span class="delete">either</span> a) the 412 (Precondition Failed) status code</td><td> </td><td class="rblock"> MUST respond with <span class="insert">either:</span> a) the 412 (Precondition Failed) status</td><td class="lineno" valign="top"></td></tr> 218 <tr><td class="lineno" valign="top"></td><td class="lblock"> or b) one of the 2xx (Successful) status codes if the origin server</td><td> </td><td class="rblock"> code or b) one of the 2xx (Successful) status codes if the origin</td><td class="lineno" valign="top"></td></tr> 378 219 <tr><td class="lineno" valign="top"></td><td class="lblock"> has verified that a state change is being requested and the final</td><td> </td><td class="rblock"> server has verified that a state change is being requested and the</td><td class="lineno" valign="top"></td></tr> 379 220 <tr><td class="lineno" valign="top"></td><td class="lblock"> state is already reflected in the current state of the target</td><td> </td><td class="rblock"> final state is already reflected in the current state of the target</td><td class="lineno" valign="top"></td></tr> … … 389 230 <tr><td class="lineno" valign="top"></td><td class="left"> because it is not applicable to a stored response.</td><td> </td><td class="right"> because it is not applicable to a stored response.</td><td class="lineno" valign="top"></td></tr> 390 231 <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr> 391 <tr bgcolor="gray" ><td></td><th><a name="part-l11" /><small>skipping to change at</small><em> page 15, line 20</em></th><th> </th><th><a name="part-r11" /><small>skipping to change at</small><em> page 15, line 20</em></th><td></td></tr> 392 <tr><td class="lineno" valign="top"></td><td class="left"> evaluate the condition prior to performing the method (Section 5).</td><td> </td><td class="right"> evaluate the condition prior to performing the method (Section 5).</td><td class="lineno" valign="top"></td></tr> 393 <tr><td class="lineno" valign="top"></td><td class="left"> If the field-value is "*", the condition is false if the origin</td><td> </td><td class="right"> If the field-value is "*", the condition is false if the origin</td><td class="lineno" valign="top"></td></tr> 394 <tr><td class="lineno" valign="top"></td><td class="left"> server has a current representation for the target resource. If the</td><td> </td><td class="right"> server has a current representation for the target resource. If the</td><td class="lineno" valign="top"></td></tr> 395 <tr><td class="lineno" valign="top"></td><td class="left"> field-value is a list of entity-tags, the condition is false if one</td><td> </td><td class="right"> field-value is a list of entity-tags, the condition is false if one</td><td class="lineno" valign="top"></td></tr> 396 <tr><td class="lineno" valign="top"></td><td class="left"> of the listed tags match the entity-tag of the selected</td><td> </td><td class="right"> of the listed tags match the entity-tag of the selected</td><td class="lineno" valign="top"></td></tr> 397 <tr><td class="lineno" valign="top"></td><td class="left"> representation.</td><td> </td><td class="right"> representation.</td><td class="lineno" valign="top"></td></tr> 398 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 399 <tr><td class="lineno" valign="top"></td><td class="left"> An origin server MUST NOT perform the requested method if the</td><td> </td><td class="right"> An origin server MUST NOT perform the requested method if the</td><td class="lineno" valign="top"></td></tr> 400 <tr><td class="lineno" valign="top"></td><td class="left"> condition evaluates to false; instead, the origin server MUST respond</td><td> </td><td class="right"> condition evaluates to false; instead, the origin server MUST respond</td><td class="lineno" valign="top"></td></tr> 401 <tr><td class="lineno" valign="top"></td><td class="left"> with either a) the 304 (Not Modified) status code if the request</td><td> </td><td class="right"> with either a) the 304 (Not Modified) status code if the request</td><td class="lineno" valign="top"></td></tr> 402 <tr><td><a name="diff0021" /></td></tr> 403 <tr><td class="lineno" valign="top"></td><td class="lblock"> method is GET or <span class="delete">HEAD; or,</span> b) the 412 (Precondition Failed) status</td><td> </td><td class="rblock"> method is GET or <span class="insert">HEAD or</span> b) the 412 (Precondition Failed) status code</td><td class="lineno" valign="top"></td></tr> 404 <tr><td class="lineno" valign="top"></td><td class="lblock"> code for all other request methods.</td><td> </td><td class="rblock"> for all other request methods.</td><td class="lineno" valign="top"></td></tr> 405 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 406 <tr><td class="lineno" valign="top"></td><td class="left"> Requirements on cache handling of a received If-None-Match header</td><td> </td><td class="right"> Requirements on cache handling of a received If-None-Match header</td><td class="lineno" valign="top"></td></tr> 407 <tr><td class="lineno" valign="top"></td><td class="left"> field are defined in Section 4.3.2 of [RFC7234].</td><td> </td><td class="right"> field are defined in Section 4.3.2 of [RFC7234].</td><td class="lineno" valign="top"></td></tr> 408 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 409 <tr><td class="lineno" valign="top"></td><td class="left">3.3. If-Modified-Since</td><td> </td><td class="right">3.3. If-Modified-Since</td><td class="lineno" valign="top"></td></tr> 410 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 411 <tr><td class="lineno" valign="top"></td><td class="left"> The "If-Modified-Since" header field makes a GET or HEAD request</td><td> </td><td class="right"> The "If-Modified-Since" header field makes a GET or HEAD request</td><td class="lineno" valign="top"></td></tr> 412 <tr><td class="lineno" valign="top"></td><td class="left"> method conditional on the selected representation's modification date</td><td> </td><td class="right"> method conditional on the selected representation's modification date</td><td class="lineno" valign="top"></td></tr> 413 <tr><td class="lineno" valign="top"></td><td class="left"> being more recent than the date provided in the field-value.</td><td> </td><td class="right"> being more recent than the date provided in the field-value.</td><td class="lineno" valign="top"></td></tr> 414 <tr><td class="lineno" valign="top"></td><td class="left"> Transfer of the selected representation's data is avoided if that</td><td> </td><td class="right"> Transfer of the selected representation's data is avoided if that</td><td class="lineno" valign="top"></td></tr> 415 <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr> 416 <tr bgcolor="gray" ><td></td><th><a name="part-l12" /><small>skipping to change at</small><em> page 16, line 8</em></th><th> </th><th><a name="part-r12" /><small>skipping to change at</small><em> page 16, line 8</em></th><td></td></tr> 232 <tr bgcolor="gray" ><td></td><th><a name="part-l6" /><small>skipping to change at</small><em> page 15, line 43</em></th><th> </th><th><a name="part-r6" /><small>skipping to change at</small><em> page 15, line 43</em></th><td></td></tr> 233 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 234 <tr><td class="lineno" valign="top"></td><td class="left"> If-Modified-Since = HTTP-date</td><td> </td><td class="right"> If-Modified-Since = HTTP-date</td><td class="lineno" valign="top"></td></tr> 235 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 236 <tr><td class="lineno" valign="top"></td><td class="left"> An example of the field is:</td><td> </td><td class="right"> An example of the field is:</td><td class="lineno" valign="top"></td></tr> 237 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 238 <tr><td class="lineno" valign="top"></td><td class="left"> If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT</td><td> </td><td class="right"> If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT</td><td class="lineno" valign="top"></td></tr> 239 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 240 <tr><td class="lineno" valign="top"></td><td class="left"> A recipient MUST ignore If-Modified-Since if the request contains an</td><td> </td><td class="right"> A recipient MUST ignore If-Modified-Since if the request contains an</td><td class="lineno" valign="top"></td></tr> 241 <tr><td class="lineno" valign="top"></td><td class="left"> If-None-Match header field; the condition in If-None-Match is</td><td> </td><td class="right"> If-None-Match header field; the condition in If-None-Match is</td><td class="lineno" valign="top"></td></tr> 242 <tr><td class="lineno" valign="top"></td><td class="left"> considered to be a more accurate replacement for the condition in If-</td><td> </td><td class="right"> considered to be a more accurate replacement for the condition in If-</td><td class="lineno" valign="top"></td></tr> 243 <tr><td><a name="diff0012" /></td></tr> 244 <tr><td class="lineno" valign="top"></td><td class="lblock"> Modified-Since<span class="delete">,</span> and the two are only combined for the sake of</td><td> </td><td class="rblock"> Modified-Since and the two are only combined for the sake of</td><td class="lineno" valign="top"></td></tr> 245 <tr><td class="lineno" valign="top"></td><td class="left"> interoperating with older intermediaries that might not implement If-</td><td> </td><td class="right"> interoperating with older intermediaries that might not implement If-</td><td class="lineno" valign="top"></td></tr> 246 <tr><td class="lineno" valign="top"></td><td class="left"> None-Match.</td><td> </td><td class="right"> None-Match.</td><td class="lineno" valign="top"></td></tr> 417 247 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 418 248 <tr><td class="lineno" valign="top"></td><td class="left"> A recipient MUST ignore the If-Modified-Since header field if the</td><td> </td><td class="right"> A recipient MUST ignore the If-Modified-Since header field if the</td><td class="lineno" valign="top"></td></tr> … … 423 253 <tr><td class="lineno" valign="top"></td><td class="left"> timestamp in terms of the origin server's clock.</td><td> </td><td class="right"> timestamp in terms of the origin server's clock.</td><td class="lineno" valign="top"></td></tr> 424 254 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 425 <tr><td class="lineno" valign="top"></td><td class="left"> If-Modified-Since is typically used for two distinct purposes: 1) to</td><td> </td><td class="right"> If-Modified-Since is typically used for two distinct purposes: 1) to</td><td class="lineno" valign="top"></td></tr> 426 <tr><td class="lineno" valign="top"></td><td class="left"> allow efficient updates of a cached representation that does not have</td><td> </td><td class="right"> allow efficient updates of a cached representation that does not have</td><td class="lineno" valign="top"></td></tr> 427 <tr><td><a name="diff0022" /></td></tr> 428 <tr><td class="lineno" valign="top"></td><td class="lblock"> an entity-tag<span class="delete">; and,</span> 2) to limit the scope of a web traversal to</td><td> </td><td class="rblock"> an entity-tag<span class="insert"> and</span> 2) to limit the scope of a web traversal to</td><td class="lineno" valign="top"></td></tr> 429 <tr><td class="lineno" valign="top"></td><td class="left"> resources that have recently changed.</td><td> </td><td class="right"> resources that have recently changed.</td><td class="lineno" valign="top"></td></tr> 430 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 431 <tr><td class="lineno" valign="top"></td><td class="left"> When used for cache updates, a cache will typically use the value of</td><td> </td><td class="right"> When used for cache updates, a cache will typically use the value of</td><td class="lineno" valign="top"></td></tr> 432 <tr><td class="lineno" valign="top"></td><td class="left"> the cached message's Last-Modified field to generate the field value</td><td> </td><td class="right"> the cached message's Last-Modified field to generate the field value</td><td class="lineno" valign="top"></td></tr> 433 <tr><td class="lineno" valign="top"></td><td class="left"> of If-Modified-Since. This behavior is most interoperable for cases</td><td> </td><td class="right"> of If-Modified-Since. This behavior is most interoperable for cases</td><td class="lineno" valign="top"></td></tr> 434 <tr><td class="lineno" valign="top"></td><td class="left"> where clocks are poorly synchronized or when the server has chosen to</td><td> </td><td class="right"> where clocks are poorly synchronized or when the server has chosen to</td><td class="lineno" valign="top"></td></tr> 435 <tr><td class="lineno" valign="top"></td><td class="left"> only honor exact timestamp matches (due to a problem with Last-</td><td> </td><td class="right"> only honor exact timestamp matches (due to a problem with Last-</td><td class="lineno" valign="top"></td></tr> 436 <tr><td class="lineno" valign="top"></td><td class="left"> Modified dates that appear to go "back in time" when the origin</td><td> </td><td class="right"> Modified dates that appear to go "back in time" when the origin</td><td class="lineno" valign="top"></td></tr> 437 <tr><td class="lineno" valign="top"></td><td class="left"> server's clock is corrected or a representation is restored from an</td><td> </td><td class="right"> server's clock is corrected or a representation is restored from an</td><td class="lineno" valign="top"></td></tr> 438 <tr><td class="lineno" valign="top"></td><td class="left"> archived backup). However, caches occasionally generate the field</td><td> </td><td class="right"> archived backup). However, caches occasionally generate the field</td><td class="lineno" valign="top"></td></tr> 439 <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr> 440 <tr bgcolor="gray" ><td></td><th><a name="part-l13" /><small>skipping to change at</small><em> page 17, line 14</em></th><th> </th><th><a name="part-r13" /><small>skipping to change at</small><em> page 17, line 14</em></th><td></td></tr> 441 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 442 <tr><td class="lineno" valign="top"></td><td class="left"> If-Unmodified-Since = HTTP-date</td><td> </td><td class="right"> If-Unmodified-Since = HTTP-date</td><td class="lineno" valign="top"></td></tr> 443 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 444 <tr><td class="lineno" valign="top"></td><td class="left"> An example of the field is:</td><td> </td><td class="right"> An example of the field is:</td><td class="lineno" valign="top"></td></tr> 445 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 446 <tr><td class="lineno" valign="top"></td><td class="left"> If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT</td><td> </td><td class="right"> If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT</td><td class="lineno" valign="top"></td></tr> 447 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 448 <tr><td class="lineno" valign="top"></td><td class="left"> A recipient MUST ignore If-Unmodified-Since if the request contains</td><td> </td><td class="right"> A recipient MUST ignore If-Unmodified-Since if the request contains</td><td class="lineno" valign="top"></td></tr> 449 <tr><td class="lineno" valign="top"></td><td class="left"> an If-Match header field; the condition in If-Match is considered to</td><td> </td><td class="right"> an If-Match header field; the condition in If-Match is considered to</td><td class="lineno" valign="top"></td></tr> 450 <tr><td class="lineno" valign="top"></td><td class="left"> be a more accurate replacement for the condition in If-Unmodified-</td><td> </td><td class="right"> be a more accurate replacement for the condition in If-Unmodified-</td><td class="lineno" valign="top"></td></tr> 451 <tr><td><a name="diff0023" /></td></tr> 452 <tr><td class="lineno" valign="top"></td><td class="lblock"> Since and the two are only combined for the sake of interoperating</td><td> </td><td class="rblock"> Since<span class="insert">,</span> and the two are only combined for the sake of interoperating</td><td class="lineno" valign="top"></td></tr> 453 <tr><td class="lineno" valign="top"></td><td class="left"> with older intermediaries that might not implement If-Match.</td><td> </td><td class="right"> with older intermediaries that might not implement If-Match.</td><td class="lineno" valign="top"></td></tr> 454 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 455 <tr><td class="lineno" valign="top"></td><td class="left"> A recipient MUST ignore the If-Unmodified-Since header field if the</td><td> </td><td class="right"> A recipient MUST ignore the If-Unmodified-Since header field if the</td><td class="lineno" valign="top"></td></tr> 456 <tr><td class="lineno" valign="top"></td><td class="left"> received field-value is not a valid HTTP-date.</td><td> </td><td class="right"> received field-value is not a valid HTTP-date.</td><td class="lineno" valign="top"></td></tr> 457 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 458 <tr><td class="lineno" valign="top"></td><td class="left"> A recipient MUST interpret an If-Unmodified-Since field-value's</td><td> </td><td class="right"> A recipient MUST interpret an If-Unmodified-Since field-value's</td><td class="lineno" valign="top"></td></tr> 459 <tr><td class="lineno" valign="top"></td><td class="left"> timestamp in terms of the origin server's clock.</td><td> </td><td class="right"> timestamp in terms of the origin server's clock.</td><td class="lineno" valign="top"></td></tr> 460 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 461 <tr><td class="lineno" valign="top"></td><td class="left"> If-Unmodified-Since is most often used with state-changing methods</td><td> </td><td class="right"> If-Unmodified-Since is most often used with state-changing methods</td><td class="lineno" valign="top"></td></tr> 462 <tr><td class="lineno" valign="top"></td><td class="left"> (e.g., POST, PUT, DELETE) to prevent accidental overwrites when</td><td> </td><td class="right"> (e.g., POST, PUT, DELETE) to prevent accidental overwrites when</td><td class="lineno" valign="top"></td></tr> 463 <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr> 464 <tr bgcolor="gray" ><td></td><th><a name="part-l14" /><small>skipping to change at</small><em> page 17, line 36</em></th><th> </th><th><a name="part-r14" /><small>skipping to change at</small><em> page 17, line 36</em></th><td></td></tr> 465 <tr><td class="lineno" valign="top"></td><td class="left"> does not supply entity-tags with its representations (i.e., to</td><td> </td><td class="right"> does not supply entity-tags with its representations (i.e., to</td><td class="lineno" valign="top"></td></tr> 466 <tr><td class="lineno" valign="top"></td><td class="left"> prevent the "lost update" problem). It can also be used with safe</td><td> </td><td class="right"> prevent the "lost update" problem). It can also be used with safe</td><td class="lineno" valign="top"></td></tr> 467 <tr><td class="lineno" valign="top"></td><td class="left"> methods to abort a request if the selected representation does not</td><td> </td><td class="right"> methods to abort a request if the selected representation does not</td><td class="lineno" valign="top"></td></tr> 468 <tr><td class="lineno" valign="top"></td><td class="left"> match one already stored (or partially stored) from a prior request.</td><td> </td><td class="right"> match one already stored (or partially stored) from a prior request.</td><td class="lineno" valign="top"></td></tr> 469 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 470 <tr><td class="lineno" valign="top"></td><td class="left"> An origin server that receives an If-Unmodified-Since header field</td><td> </td><td class="right"> An origin server that receives an If-Unmodified-Since header field</td><td class="lineno" valign="top"></td></tr> 471 <tr><td class="lineno" valign="top"></td><td class="left"> MUST evaluate the condition prior to performing the method</td><td> </td><td class="right"> MUST evaluate the condition prior to performing the method</td><td class="lineno" valign="top"></td></tr> 472 <tr><td class="lineno" valign="top"></td><td class="left"> (Section 5). The origin server MUST NOT perform the requested method</td><td> </td><td class="right"> (Section 5). The origin server MUST NOT perform the requested method</td><td class="lineno" valign="top"></td></tr> 473 <tr><td class="lineno" valign="top"></td><td class="left"> if the selected representation's last modification date is more</td><td> </td><td class="right"> if the selected representation's last modification date is more</td><td class="lineno" valign="top"></td></tr> 474 <tr><td class="lineno" valign="top"></td><td class="left"> recent than the date provided in the field-value; instead the origin</td><td> </td><td class="right"> recent than the date provided in the field-value; instead the origin</td><td class="lineno" valign="top"></td></tr> 475 <tr><td><a name="diff0024" /></td></tr> 476 <tr><td class="lineno" valign="top"></td><td class="lblock"> server MUST respond with <span class="delete">either:</span> a) the 412 (Precondition Failed)</td><td> </td><td class="rblock"> server MUST respond with <span class="insert">either</span> a) the 412 (Precondition Failed)</td><td class="lineno" valign="top"></td></tr> 477 <tr><td class="lineno" valign="top"></td><td class="lblock"> status <span class="delete">code; or,</span> b) one of the 2xx (Successful) status codes if the</td><td> </td><td class="rblock"> status <span class="insert">code or</span> b) one of the 2xx (Successful) status codes if the</td><td class="lineno" valign="top"></td></tr> 478 <tr><td class="lineno" valign="top"></td><td class="left"> origin server has verified that a state change is being requested and</td><td> </td><td class="right"> origin server has verified that a state change is being requested and</td><td class="lineno" valign="top"></td></tr> 479 <tr><td class="lineno" valign="top"></td><td class="left"> the final state is already reflected in the current state of the</td><td> </td><td class="right"> the final state is already reflected in the current state of the</td><td class="lineno" valign="top"></td></tr> 480 <tr><td class="lineno" valign="top"></td><td class="left"> target resource (i.e., the change requested by the user agent has</td><td> </td><td class="right"> target resource (i.e., the change requested by the user agent has</td><td class="lineno" valign="top"></td></tr> 481 <tr><td class="lineno" valign="top"></td><td class="left"> already succeeded, but the user agent might not be aware of that</td><td> </td><td class="right"> already succeeded, but the user agent might not be aware of that</td><td class="lineno" valign="top"></td></tr> 482 <tr><td class="lineno" valign="top"></td><td class="left"> because the prior response message was lost or a compatible change</td><td> </td><td class="right"> because the prior response message was lost or a compatible change</td><td class="lineno" valign="top"></td></tr> 483 <tr><td class="lineno" valign="top"></td><td class="left"> was made by some other user agent). In the latter case, the origin</td><td> </td><td class="right"> was made by some other user agent). In the latter case, the origin</td><td class="lineno" valign="top"></td></tr> 484 <tr><td class="lineno" valign="top"></td><td class="left"> server MUST NOT send a validator header field in the response unless</td><td> </td><td class="right"> server MUST NOT send a validator header field in the response unless</td><td class="lineno" valign="top"></td></tr> 485 <tr><td class="lineno" valign="top"></td><td class="left"> it can verify that the request is a duplicate of an immediately prior</td><td> </td><td class="right"> it can verify that the request is a duplicate of an immediately prior</td><td class="lineno" valign="top"></td></tr> 486 <tr><td class="lineno" valign="top"></td><td class="left"> change made by the same user agent.</td><td> </td><td class="right"> change made by the same user agent.</td><td class="lineno" valign="top"></td></tr> 255 <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr> 256 <tr bgcolor="gray" ><td></td><th><a name="part-l7" /><small>skipping to change at</small><em> page 18, line 11</em></th><th> </th><th><a name="part-r7" /><small>skipping to change at</small><em> page 18, line 11</em></th><td></td></tr> 487 257 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 488 258 <tr><td class="lineno" valign="top"></td><td class="left"> The If-Unmodified-Since header field can be ignored by caches and</td><td> </td><td class="right"> The If-Unmodified-Since header field can be ignored by caches and</td><td class="lineno" valign="top"></td></tr> … … 493 263 <tr><td class="lineno" valign="top"></td><td class="left"> The "If-Range" header field provides a special conditional request</td><td> </td><td class="right"> The "If-Range" header field provides a special conditional request</td><td class="lineno" valign="top"></td></tr> 494 264 <tr><td class="lineno" valign="top"></td><td class="left"> mechanism that is similar to the If-Match and If-Unmodified-Since</td><td> </td><td class="right"> mechanism that is similar to the If-Match and If-Unmodified-Since</td><td class="lineno" valign="top"></td></tr> 495 <tr><td ><a name="diff0025" /></td></tr>496 <tr><td class="lineno" valign="top"></td><td class="l block"> header fields but instructs the recipient to ignore the Range header</td><td> </td><td class="rblock"> header fields but <span class="insert">that</span> instructs the recipient to ignore the Range</td><td class="lineno" valign="top"></td></tr>497 <tr><td class="lineno" valign="top"></td><td class="lblock"> field if the validator doesn't match, resulting in transfer of the</td><td> </td><td class="rblock"> header field if the validator doesn't match, resulting in transfer of</td><td class="lineno" valign="top"></td></tr>498 <tr><td class="lineno" valign="top"></td><td class="lblock"> new selected representation instead of a 412 response. If-Range is</td><td> </td><td class="rblock"> the new selected representation instead of a 412 <span class="insert">(Precondition</span></td><td class="lineno" valign="top"></td></tr>499 <tr><td class="lineno" valign="top"></td><td class="lblock"> defined in Section 3.2 of [RFC7233].</td><td> </td><td class="rblock"><span class="insert"> Failed)</span> response. If-Range is defined in Section 3.2 of [RFC7233].</td><td class="lineno" valign="top"></td></tr>265 <tr><td class="lineno" valign="top"></td><td class="left"> header fields but that instructs the recipient to ignore the Range</td><td> </td><td class="right"> header fields but that instructs the recipient to ignore the Range</td><td class="lineno" valign="top"></td></tr> 266 <tr><td class="lineno" valign="top"></td><td class="left"> header field if the validator doesn't match, resulting in transfer of</td><td> </td><td class="right"> header field if the validator doesn't match, resulting in transfer of</td><td class="lineno" valign="top"></td></tr> 267 <tr><td><a name="diff0013" /></td></tr> 268 <tr><td class="lineno" valign="top"></td><td class="lblock"> the new selected representation instead of a 412 response. If-Range</td><td> </td><td class="rblock"> the new selected representation instead of a 412 <span class="insert">(Precondition</span></td><td class="lineno" valign="top"></td></tr> 269 <tr><td class="lineno" valign="top"></td><td class="lblock"> is defined in Section 3.2 of [RFC7233].</td><td> </td><td class="rblock"><span class="insert"> Failed)</span> response. If-Range is defined in Section 3.2 of [RFC7233].</td><td class="lineno" valign="top"></td></tr> 500 270 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 501 271 <tr><td class="lineno" valign="top"></td><td class="left">4. Status Code Definitions</td><td> </td><td class="right">4. Status Code Definitions</td><td class="lineno" valign="top"></td></tr> … … 505 275 <tr><td class="lineno" valign="top"></td><td class="left"> The 304 (Not Modified) status code indicates that a conditional GET</td><td> </td><td class="right"> The 304 (Not Modified) status code indicates that a conditional GET</td><td class="lineno" valign="top"></td></tr> 506 276 <tr><td class="lineno" valign="top"></td><td class="left"> or HEAD request has been received and would have resulted in a 200</td><td> </td><td class="right"> or HEAD request has been received and would have resulted in a 200</td><td class="lineno" valign="top"></td></tr> 507 <tr><td><a name="diff0026" /></td></tr> 508 <tr><td class="lineno" valign="top"></td><td class="lblock"> (OK) response if it were not for the fact that the condition<span class="delete"> has</span></td><td> </td><td class="rblock"> (OK) response if it were not for the fact that the condition</td><td class="lineno" valign="top"></td></tr> 277 <tr><td class="lineno" valign="top"></td><td class="left"> (OK) response if it were not for the fact that the condition</td><td> </td><td class="right"> (OK) response if it were not for the fact that the condition</td><td class="lineno" valign="top"></td></tr> 509 278 <tr><td class="lineno" valign="top"></td><td class="left"> evaluated to false. In other words, there is no need for the server</td><td> </td><td class="right"> evaluated to false. In other words, there is no need for the server</td><td class="lineno" valign="top"></td></tr> 510 279 <tr><td class="lineno" valign="top"></td><td class="left"> to transfer a representation of the target resource because the</td><td> </td><td class="right"> to transfer a representation of the target resource because the</td><td class="lineno" valign="top"></td></tr> … … 514 283 <tr><td class="lineno" valign="top"></td><td class="left"> representation as if it were the payload of a 200 (OK) response.</td><td> </td><td class="right"> representation as if it were the payload of a 200 (OK) response.</td><td class="lineno" valign="top"></td></tr> 515 284 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 516 <tr><td><a name="diff00 27" /></td></tr>285 <tr><td><a name="diff0014" /></td></tr> 517 286 <tr><td class="lineno" valign="top"></td><td class="lblock"> The server generating a 304 response MUST generate any of the</td><td> </td><td class="rblock"> The server generating a 304 <span class="insert">(Not Modified)</span> response MUST generate any</td><td class="lineno" valign="top"></td></tr> 518 287 <tr><td class="lineno" valign="top"></td><td class="lblock"> following header fields that would have been sent in a 200 (OK)</td><td> </td><td class="rblock"> of the following header fields that would have been sent in a 200</td><td class="lineno" valign="top"></td></tr> … … 520 289 <tr><td class="lineno" valign="top"></td><td class="lblock"> ETag, Expires, and Vary.</td><td> </td><td class="rblock"> Date, ETag, Expires, and Vary.</td><td class="lineno" valign="top"></td></tr> 521 290 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 522 <tr><td><a name="diff00 28" /></td></tr>291 <tr><td><a name="diff0015" /></td></tr> 523 292 <tr><td class="lineno" valign="top"></td><td class="lblock"> Since the goal of a 304 response is to minimize information transfer</td><td> </td><td class="rblock"> Since the goal of a 304 <span class="insert">(Not Modified)</span> response is to minimize</td><td class="lineno" valign="top"></td></tr> 524 293 <tr><td class="lineno" valign="top"></td><td class="lblock"> when the recipient already has one or more cached representations, a</td><td> </td><td class="rblock"> information transfer when the recipient already has one or more</td><td class="lineno" valign="top"></td></tr> … … 528 297 <tr><td class="lineno" valign="top"></td><td class="lblock"> response does not have an ETag field).</td><td> </td><td class="rblock"> might be useful if the response does not have an ETag field).</td><td class="lineno" valign="top"></td></tr> 529 298 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 530 <tr><td><a name="diff00 29" /></td></tr>299 <tr><td><a name="diff0016" /></td></tr> 531 300 <tr><td class="lineno" valign="top"></td><td class="lblock"> Requirements on a cache that receives a 304 response are defined in</td><td> </td><td class="rblock"> Requirements on a cache that receives a 304 <span class="insert">(Not Modified)</span> response</td><td class="lineno" valign="top"></td></tr> 532 301 <tr><td class="lineno" valign="top"></td><td class="lblock"> Section 4.3.4 of [RFC7234]. If the conditional request originated</td><td> </td><td class="rblock"> are defined in Section 4.3.4 of [RFC7234]. If the conditional</td><td class="lineno" valign="top"></td></tr> … … 535 304 <tr><td class="lineno" valign="top"></td><td class="lblock"> forward the 304 response to that client.</td><td> </td><td class="rblock"> proxy SHOULD forward the 304 <span class="insert">(Not Modified)</span> response to that client.</td><td class="lineno" valign="top"></td></tr> 536 305 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 537 <tr><td><a name="diff00 30" /></td></tr>306 <tr><td><a name="diff0017" /></td></tr> 538 307 <tr><td class="lineno" valign="top"></td><td class="lblock"> A 304 response cannot contain a message-body; it is always terminated</td><td> </td><td class="rblock"> A 304 <span class="insert">(Not Modified)</span> response cannot contain a message-body; it is</td><td class="lineno" valign="top"></td></tr> 539 308 <tr><td class="lineno" valign="top"></td><td class="lblock"> by the first empty line after the header fields.</td><td> </td><td class="rblock"> always terminated by the first empty line after the header fields.</td><td class="lineno" valign="top"></td></tr> … … 545 314 <tr><td class="lineno" valign="top"></td><td class="left"> tested on the server. This response code allows the client to place</td><td> </td><td class="right"> tested on the server. This response code allows the client to place</td><td class="lineno" valign="top"></td></tr> 546 315 <tr><td class="lineno" valign="top"></td><td class="left"> preconditions on the current resource state (its current</td><td> </td><td class="right"> preconditions on the current resource state (its current</td><td class="lineno" valign="top"></td></tr> 547 <tr><td><a name="diff0031" /></td></tr> 548 <tr><td class="lineno" valign="top"></td><td class="lblock"> representations and metadata) and<span class="delete"> thus</span> prevent the request method</td><td> </td><td class="rblock"> representations and metadata) and<span class="insert">, thus,</span> prevent the request method</td><td class="lineno" valign="top"></td></tr> 316 <tr><td class="lineno" valign="top"></td><td class="left"> representations and metadata) and, thus, prevent the request method</td><td> </td><td class="right"> representations and metadata) and, thus, prevent the request method</td><td class="lineno" valign="top"></td></tr> 549 317 <tr><td class="lineno" valign="top"></td><td class="left"> from being applied if the target resource is in an unexpected state.</td><td> </td><td class="right"> from being applied if the target resource is in an unexpected state.</td><td class="lineno" valign="top"></td></tr> 550 318 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> … … 557 325 <tr><td class="lineno" valign="top"></td><td class="left"> all received preconditions if its response to the same request</td><td> </td><td class="right"> all received preconditions if its response to the same request</td><td class="lineno" valign="top"></td></tr> 558 326 <tr><td class="lineno" valign="top"></td><td class="left"> without those conditions would have been a status code other than a</td><td> </td><td class="right"> without those conditions would have been a status code other than a</td><td class="lineno" valign="top"></td></tr> 559 <tr><td><a name="diff00 32" /></td></tr>327 <tr><td><a name="diff0018" /></td></tr> 560 328 <tr><td class="lineno" valign="top"></td><td class="lblock"> 2xx or 412 (Precondition Failed). In other words, redirects and</td><td> </td><td class="rblock"> 2xx <span class="insert">(Successful)</span> or 412 (Precondition Failed). In other words,</td><td class="lineno" valign="top"></td></tr> 561 329 <tr><td class="lineno" valign="top"></td><td class="lblock"> failures take precedence over the evaluation of preconditions in</td><td> </td><td class="rblock"> redirects and failures take precedence over the evaluation of</td><td class="lineno" valign="top"></td></tr> … … 565 333 <tr><td class="lineno" valign="top"></td><td class="left"> cannot act as a cache for requests on the target resource MUST NOT</td><td> </td><td class="right"> cannot act as a cache for requests on the target resource MUST NOT</td><td class="lineno" valign="top"></td></tr> 566 334 <tr><td class="lineno" valign="top"></td><td class="left"> evaluate the conditional request header fields defined by this</td><td> </td><td class="right"> evaluate the conditional request header fields defined by this</td><td class="lineno" valign="top"></td></tr> 567 <tr><td><a name="diff00 33" /></td></tr>335 <tr><td><a name="diff0019" /></td></tr> 568 336 <tr><td class="lineno" valign="top"></td><td class="lblock"> specification, and MUST forward them if the request is forwarded,</td><td> </td><td class="rblock"> specification, and <span class="insert">it </span>MUST forward them if the request is forwarded,</td><td class="lineno" valign="top"></td></tr> 569 337 <tr><td class="lineno" valign="top"></td><td class="left"> since the generating client intends that they be evaluated by a</td><td> </td><td class="right"> since the generating client intends that they be evaluated by a</td><td class="lineno" valign="top"></td></tr> … … 578 346 <tr><td class="lineno" valign="top"></td><td class="left"> target resource in general, or on a group of resources. For</td><td> </td><td class="right"> target resource in general, or on a group of resources. For</td><td class="lineno" valign="top"></td></tr> 579 347 <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr> 580 <tr bgcolor="gray" ><td></td><th><a name="part-l 15" /><small>skipping to change at</small><em> page 21, line 23</em></th><th> </th><th><a name="part-r15" /><small>skipping to change at</small><em> page 21, line 23</em></th><td></td></tr>348 <tr bgcolor="gray" ><td></td><th><a name="part-l8" /><small>skipping to change at</small><em> page 21, line 23</em></th><th> </th><th><a name="part-r8" /><small>skipping to change at</small><em> page 21, line 23</em></th><td></td></tr> 581 349 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 582 350 <tr><td class="lineno" valign="top"></td><td class="left"> Any extension to HTTP/1.1 that defines additional conditional request</td><td> </td><td class="right"> Any extension to HTTP/1.1 that defines additional conditional request</td><td class="lineno" valign="top"></td></tr> … … 589 357 <tr><td class="lineno" valign="top"></td><td class="left">7.1. Status Code Registration</td><td> </td><td class="right">7.1. Status Code Registration</td><td class="lineno" valign="top"></td></tr> 590 358 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 591 <tr><td><a name="diff00 34" /></td></tr>359 <tr><td><a name="diff0020" /></td></tr> 592 360 <tr><td class="lineno" valign="top"></td><td class="lblock"> The <span class="delete">"Hypertext Transfer Protocol (HTTP)</span> Status <span class="delete">Code Registry"</span> located</td><td> </td><td class="rblock"> The <span class="insert">"HTTP</span> Status <span class="insert">Codes" registry</span> located at</td><td class="lineno" valign="top"></td></tr> 593 361 <tr><td class="lineno" valign="top"></td><td class="lblock"> at <http://www.iana.org/assignments/http-status-codes> has been</td><td> </td><td class="rblock"> <http://www.iana.org/assignments/http-status-codes> has been updated</td><td class="lineno" valign="top"></td></tr> … … 603 371 <tr><td class="lineno" valign="top"></td><td class="left">7.2. Header Field Registration</td><td> </td><td class="right">7.2. Header Field Registration</td><td class="lineno" valign="top"></td></tr> 604 372 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 605 <tr><td><a name="diff00 35" /></td></tr>373 <tr><td><a name="diff0021" /></td></tr> 606 374 <tr><td class="lineno" valign="top"></td><td class="lblock"> HTTP header fields are registered within the <span class="delete">"Message Headers"</span></td><td> </td><td class="rblock"> HTTP header fields are registered within the <span class="insert">Message Header Field</span></td><td class="lineno" valign="top"></td></tr> 607 375 <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> registry</span> maintained at</td><td> </td><td class="rblock"><span class="insert"> Registry</span> maintained at</td><td class="lineno" valign="top"></td></tr> 608 376 <tr><td class="lineno" valign="top"></td><td class="left"> <http://www.iana.org/assignments/message-headers/>.</td><td> </td><td class="right"> <http://www.iana.org/assignments/message-headers/>.</td><td class="lineno" valign="top"></td></tr> 609 377 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 610 <tr><td><a name="diff00 36" /></td></tr>378 <tr><td><a name="diff0022" /></td></tr> 611 379 <tr><td class="lineno" valign="top"></td><td class="lblock"> This document defines the following HTTP header fields, so <span class="delete">the</span></td><td> </td><td class="rblock"> This document defines the following HTTP header fields, so <span class="insert">their</span></td><td class="lineno" valign="top"></td></tr> 612 380 <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> "Permanent Message Header Field Names"</span> registry <span class="delete">has</span> been updated</td><td> </td><td class="rblock"><span class="insert"> associated</span> registry <span class="insert">entries have</span> been updated <span class="insert">according to the</span></td><td class="lineno" valign="top"></td></tr> … … 632 400 <tr><td class="lineno" valign="top"></td><td class="left"> and users of known security concerns specific to the HTTP conditional</td><td> </td><td class="right"> and users of known security concerns specific to the HTTP conditional</td><td class="lineno" valign="top"></td></tr> 633 401 <tr><td class="lineno" valign="top"></td><td class="left"> request mechanisms. More general security considerations are</td><td> </td><td class="right"> request mechanisms. More general security considerations are</td><td class="lineno" valign="top"></td></tr> 634 <tr><td><a name="diff00 37" /></td></tr>402 <tr><td><a name="diff0023" /></td></tr> 635 403 <tr><td class="lineno" valign="top"></td><td class="lblock"> addressed in HTTP messaging [RFC7230] and semantics <span class="delete">[RFC7231].</span></td><td> </td><td class="rblock"> addressed in <span class="insert">the</span> HTTP messaging [RFC7230] and semantics <span class="insert">[RFC7231]</span></td><td class="lineno" valign="top"></td></tr> 636 404 <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> documents.</span></td><td class="lineno" valign="top"></td></tr> … … 646 414 <tr><td class="lineno" valign="top"></td><td class="left"> An entity-tag can be abused in ways that create privacy risks. For</td><td> </td><td class="right"> An entity-tag can be abused in ways that create privacy risks. For</td><td class="lineno" valign="top"></td></tr> 647 415 <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr> 648 <tr bgcolor="gray" ><td></td><th><a name="part-l 16" /><small>skipping to change at</small><em> page 23, line 14</em></th><th> </th><th><a name="part-r16" /><small>skipping to change at</small><em> page 23, line 14</em></th><td></td></tr>416 <tr bgcolor="gray" ><td></td><th><a name="part-l9" /><small>skipping to change at</small><em> page 23, line 14</em></th><th> </th><th><a name="part-r9" /><small>skipping to change at</small><em> page 23, line 14</em></th><td></td></tr> 649 417 <tr><td class="lineno" valign="top"></td><td class="left">10.1. Normative References</td><td> </td><td class="right">10.1. Normative References</td><td class="lineno" valign="top"></td></tr> 650 418 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> … … 657 425 <tr><td class="lineno" valign="top"></td><td class="left"> [RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer</td><td> </td><td class="right"> [RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer</td><td class="lineno" valign="top"></td></tr> 658 426 <tr><td class="lineno" valign="top"></td><td class="left"> Protocol (HTTP/1.1): Message Syntax and Routing",</td><td> </td><td class="right"> Protocol (HTTP/1.1): Message Syntax and Routing",</td><td class="lineno" valign="top"></td></tr> 659 <tr><td><a name="diff00 38" /></td></tr>427 <tr><td><a name="diff0024" /></td></tr> 660 428 <tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">draft-ietf-httpbis-p1-messaging-latest (work in progress),</span></td><td> </td><td class="rblock"> <span class="insert">RFC 7230,</span> May 2014.</td><td class="lineno" valign="top"></td></tr> 661 429 <tr><td class="lineno" valign="top"></td><td class="lblock"> May 2014.</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr> 662 430 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 663 431 <tr><td class="lineno" valign="top"></td><td class="left"> [RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer</td><td> </td><td class="right"> [RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer</td><td class="lineno" valign="top"></td></tr> 664 <tr><td><a name="diff00 39" /></td></tr>432 <tr><td><a name="diff0025" /></td></tr> 665 433 <tr><td class="lineno" valign="top"></td><td class="lblock"> Protocol (HTTP/1.1): Semantics and Content",</td><td> </td><td class="rblock"> Protocol (HTTP/1.1): Semantics and Content", <span class="insert">RFC 7231,</span></td><td class="lineno" valign="top"></td></tr> 666 434 <tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">draft-ietf-httpbis-p2-semantics-latest (work in progress),</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr> … … 669 437 <tr><td class="lineno" valign="top"></td><td class="left"> [RFC7233] Fielding, R., Ed., Lafon, Y., Ed., and J. Reschke, Ed.,</td><td> </td><td class="right"> [RFC7233] Fielding, R., Ed., Lafon, Y., Ed., and J. Reschke, Ed.,</td><td class="lineno" valign="top"></td></tr> 670 438 <tr><td class="lineno" valign="top"></td><td class="left"> "Hypertext Transfer Protocol (HTTP/1.1): Range Requests",</td><td> </td><td class="right"> "Hypertext Transfer Protocol (HTTP/1.1): Range Requests",</td><td class="lineno" valign="top"></td></tr> 671 <tr><td><a name="diff00 40" /></td></tr>439 <tr><td><a name="diff0026" /></td></tr> 672 440 <tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">draft-ietf-httpbis-p5-range-latest (work in progress),</span></td><td> </td><td class="rblock"> <span class="insert">RFC 7233,</span> May 2014.</td><td class="lineno" valign="top"></td></tr> 673 441 <tr><td class="lineno" valign="top"></td><td class="lblock"> May 2014.</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr> … … 675 443 <tr><td class="lineno" valign="top"></td><td class="left"> [RFC7234] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke,</td><td> </td><td class="right"> [RFC7234] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke,</td><td class="lineno" valign="top"></td></tr> 676 444 <tr><td class="lineno" valign="top"></td><td class="left"> Ed., "Hypertext Transfer Protocol (HTTP/1.1): Caching",</td><td> </td><td class="right"> Ed., "Hypertext Transfer Protocol (HTTP/1.1): Caching",</td><td class="lineno" valign="top"></td></tr> 677 <tr><td><a name="diff00 41" /></td></tr>445 <tr><td><a name="diff0027" /></td></tr> 678 446 <tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">draft-ietf-httpbis-p6-cache-latest (work in progress),</span></td><td> </td><td class="rblock"> <span class="insert">RFC 7234,</span> May 2014.</td><td class="lineno" valign="top"></td></tr> 679 447 <tr><td class="lineno" valign="top"></td><td class="lblock"> May 2014.</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr> … … 694 462 <tr><td class="lineno" valign="top"></td><td class="left">Appendix A. Changes from RFC 2616</td><td> </td><td class="right">Appendix A. Changes from RFC 2616</td><td class="lineno" valign="top"></td></tr> 695 463 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 696 <tr><td><a name="diff00 42" /></td></tr>464 <tr><td><a name="diff0028" /></td></tr> 697 465 <tr><td class="lineno" valign="top"></td><td class="lblock"> The definition of validator weakness has been expanded and <span class="delete">clarified.</span></td><td> </td><td class="rblock"> The definition of validator weakness has been expanded and <span class="insert">clarified</span></td><td class="lineno" valign="top"></td></tr> 698 466 <tr><td class="lineno" valign="top"></td><td class="lblock"> (Section <span class="delete">2.1)</span></td><td> </td><td class="rblock"> (Section <span class="insert">2.1).</span></td><td class="lineno" valign="top"></td></tr> 699 467 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 700 468 <tr><td class="lineno" valign="top"></td><td class="left"> Weak entity-tags are now allowed in all requests except range</td><td> </td><td class="right"> Weak entity-tags are now allowed in all requests except range</td><td class="lineno" valign="top"></td></tr> 701 <tr><td><a name="diff00 43" /></td></tr>469 <tr><td><a name="diff0029" /></td></tr> 702 470 <tr><td class="lineno" valign="top"></td><td class="lblock"> requests. (Sections 2.1 and <span class="delete">3.2)</span></td><td> </td><td class="rblock"> requests. (Sections 2.1 and <span class="insert">3.2.)</span></td><td class="lineno" valign="top"></td></tr> 703 471 <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"> </td><td class="lineno" valign="top"></td></tr> 704 472 <tr><td class="lineno" valign="top"></td><td class="left"> The ETag header field ABNF has been changed to not use quoted-string,</td><td> </td><td class="right"> The ETag header field ABNF has been changed to not use quoted-string,</td><td class="lineno" valign="top"></td></tr> 705 <tr><td><a name="diff00 44" /></td></tr>473 <tr><td><a name="diff0030" /></td></tr> 706 474 <tr><td class="lineno" valign="top"></td><td class="lblock"> thus avoiding escaping issues<span class="delete">. (Section 2.3)</span></td><td> </td><td class="rblock"> thus avoiding escaping issues<span class="insert"> (Section 2.3).</span></td><td class="lineno" valign="top"></td></tr> 707 475 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 708 476 <tr><td class="lineno" valign="top"></td><td class="left"> ETag is defined to provide an entity tag for the selected</td><td> </td><td class="right"> ETag is defined to provide an entity tag for the selected</td><td class="lineno" valign="top"></td></tr> 709 477 <tr><td class="lineno" valign="top"></td><td class="left"> representation, thereby clarifying what it applies to in various</td><td> </td><td class="right"> representation, thereby clarifying what it applies to in various</td><td class="lineno" valign="top"></td></tr> 710 <tr><td><a name="diff00 45" /></td></tr>478 <tr><td><a name="diff0031" /></td></tr> 711 479 <tr><td class="lineno" valign="top"></td><td class="lblock"> situations (such as a PUT response)<span class="delete">. (Section 2.3)</span></td><td> </td><td class="rblock"> situations (such as a PUT response)<span class="insert"> (Section 2.3).</span></td><td class="lineno" valign="top"></td></tr> 712 480 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 713 481 <tr><td class="lineno" valign="top"></td><td class="left"> The precedence for evaluation of conditional requests has been</td><td> </td><td class="right"> The precedence for evaluation of conditional requests has been</td><td class="lineno" valign="top"></td></tr> 714 <tr><td><a name="diff00 46" /></td></tr>482 <tr><td><a name="diff0032" /></td></tr> 715 483 <tr><td class="lineno" valign="top"></td><td class="lblock"> defined<span class="delete">. (Section 6)</span></td><td> </td><td class="rblock"> defined<span class="insert"> (Section 6).</span></td><td class="lineno" valign="top"></td></tr> 716 484 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> … … 726 494 <tr><td class="lineno" valign="top"></td><td class="left"> The rules below are defined in [RFC7230]:</td><td> </td><td class="right"> The rules below are defined in [RFC7230]:</td><td class="lineno" valign="top"></td></tr> 727 495 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 728 <tr><td><a name="diff00 47" /></td></tr>496 <tr><td><a name="diff0033" /></td></tr> 729 497 <tr><td class="lineno" valign="top"></td><td class="lblock"> OWS = <OWS, <span class="delete">see</span> [RFC7230], Section 3.2.3></td><td> </td><td class="rblock"> OWS = <OWS, <span class="insert">defined in</span> [RFC7230], Section 3.2.3></td><td class="lineno" valign="top"></td></tr> 730 498 <tr><td class="lineno" valign="top"></td><td class="lblock"> obs-text = <obs-text, <span class="delete">see</span> [RFC7230], Section 3.2.6></td><td> </td><td class="rblock"> obs-text = <obs-text, <span class="insert">defined in</span> [RFC7230], Section 3.2.6></td><td class="lineno" valign="top"></td></tr> 731 499 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 732 <tr><td><a name="diff00 48" /></td></tr>500 <tr><td><a name="diff0034" /></td></tr> 733 501 <tr><td class="lineno" valign="top"></td><td class="lblock"> The rule<span class="delete">s below are defined in other parts</span>:</td><td> </td><td class="rblock"> The rule<span class="insert"> below is defined in [RFC7231]</span>:</td><td class="lineno" valign="top"></td></tr> 734 502 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 735 <tr><td><a name="diff00 49" /></td></tr>503 <tr><td><a name="diff0035" /></td></tr> 736 504 <tr><td class="lineno" valign="top"></td><td class="lblock"> HTTP-date = <HTTP-date, <span class="delete">see</span> [RFC7231], Section 7.1.1.1></td><td> </td><td class="rblock"> HTTP-date = <HTTP-date, <span class="insert">defined in</span> [RFC7231], Section 7.1.1.1></td><td class="lineno" valign="top"></td></tr> 737 505 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> … … 743 511 <tr><td class="lineno" valign="top"></td><td class="left"> ETag = entity-tag</td><td> </td><td class="right"> ETag = entity-tag</td><td class="lineno" valign="top"></td></tr> 744 512 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 745 <tr><td><a name="diff00 50" /></td></tr>513 <tr><td><a name="diff0036" /></td></tr> 746 514 <tr><td class="lineno" valign="top"></td><td class="lblock"> HTTP-date = <HTTP-date, <span class="delete">see</span> [RFC7231], Section 7.1.1.1></td><td> </td><td class="rblock"> HTTP-date = <HTTP-date, <span class="insert">defined in</span> [RFC7231], Section 7.1.1.1></td><td class="lineno" valign="top"></td></tr> 747 515 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> … … 755 523 <tr><td class="lineno" valign="top"></td><td class="left"> Last-Modified = HTTP-date</td><td> </td><td class="right"> Last-Modified = HTTP-date</td><td class="lineno" valign="top"></td></tr> 756 524 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 757 <tr><td><a name="diff00 51" /></td></tr>525 <tr><td><a name="diff0037" /></td></tr> 758 526 <tr><td class="lineno" valign="top"></td><td class="lblock"> OWS = <OWS, <span class="delete">see</span> [RFC7230], Section 3.2.3></td><td> </td><td class="rblock"> OWS = <OWS, <span class="insert">defined in</span> [RFC7230], Section 3.2.3></td><td class="lineno" valign="top"></td></tr> 759 527 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> … … 762 530 <tr><td class="lineno" valign="top"></td><td class="left"> / obs-text</td><td> </td><td class="right"> / obs-text</td><td class="lineno" valign="top"></td></tr> 763 531 <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> 764 <tr><td><a name="diff00 52" /></td></tr>532 <tr><td><a name="diff0038" /></td></tr> 765 533 <tr><td class="lineno" valign="top"></td><td class="lblock"> obs-text = <obs-text, <span class="delete">see</span> [RFC7230], Section 3.2.6></td><td> </td><td class="rblock"> obs-text = <obs-text, <span class="insert">defined in</span> [RFC7230], Section 3.2.6></td><td class="lineno" valign="top"></td></tr> 766 534 <tr><td class="lineno" valign="top"></td><td class="left"> opaque-tag = DQUOTE *etagc DQUOTE</td><td> </td><td class="right"> opaque-tag = DQUOTE *etagc DQUOTE</td><td class="lineno" valign="top"></td></tr> … … 776 544 777 545 <tr><td></td><td class="left"></td><td> </td><td class="right"></td><td></td></tr> 778 <tr bgcolor="gray"><th colspan="5" align="center"><a name="end"> End of changes. 52change blocks. </a></th></tr>779 <tr class="stats"><td></td><th><i> 122 lines changed or deleted</i></th><th><i> </i></th><th><i>103lines changed or added</i></th><td></td></tr>546 <tr bgcolor="gray"><th colspan="5" align="center"><a name="end"> End of changes. 38 change blocks. </a></th></tr> 547 <tr class="stats"><td></td><th><i>98 lines changed or deleted</i></th><th><i> </i></th><th><i>79 lines changed or added</i></th><td></td></tr> 780 548 <tr><td colspan="5" align="center" class="small"><br/>This html diff was produced by rfcdiff 1.38. The latest version is available from <a href="http://www.tools.ietf.org/tools/rfcdiff/" >http://tools.ietf.org/tools/rfcdiff/</a> </td></tr> 781 549 </table>
Note: See TracChangeset
for help on using the changeset viewer.