Changeset 2150 for draft-ietf-httpbis/latest
- Timestamp:
- 23/01/13 10:21:37 (10 years ago)
- Location:
- draft-ietf-httpbis/latest
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
draft-ietf-httpbis/latest/p5-range.html
r2147 r2150 449 449 } 450 450 @bottom-center { 451 content: "Expires July 2 4, 2013";451 content: "Expires July 27, 2013"; 452 452 } 453 453 @bottom-right { … … 492 492 <meta name="dct.creator" content="Reschke, J. F."> 493 493 <meta name="dct.identifier" content="urn:ietf:id:draft-ietf-httpbis-p5-range-latest"> 494 <meta name="dct.issued" scheme="ISO8601" content="2013-01-2 0">494 <meta name="dct.issued" scheme="ISO8601" content="2013-01-23"> 495 495 <meta name="dct.replaces" content="urn:ietf:rfc:2616"> 496 496 <meta name="dct.abstract" content="The Hypertext Transfer Protocol (HTTP) is an application-level protocol for distributed, collaborative, hypertext information systems. This document defines range requests and the rules for constructing and combining responses to those requests."> … … 518 518 </tr> 519 519 <tr> 520 <td class="left">Expires: July 2 4, 2013</td>520 <td class="left">Expires: July 27, 2013</td> 521 521 <td class="right">J. Reschke, Editor</td> 522 522 </tr> … … 527 527 <tr> 528 528 <td class="left"></td> 529 <td class="right">January 2 0, 2013</td>529 <td class="right">January 23, 2013</td> 530 530 </tr> 531 531 </tbody> … … 552 552 in progress”. 553 553 </p> 554 <p>This Internet-Draft will expire on July 2 4, 2013.</p>554 <p>This Internet-Draft will expire on July 27, 2013.</p> 555 555 <h1><a id="rfc.copyrightnotice" href="#rfc.copyrightnotice">Copyright Notice</a></h1> 556 556 <p>Copyright © 2013 IETF Trust and the persons identified as the document authors. All rights reserved.</p> … … 670 670 <a href="#rule.ranges-specifier" class="smpl">first-byte-pos</a> = 1*<a href="#imported.abnf" class="smpl">DIGIT</a> 671 671 <a href="#rule.ranges-specifier" class="smpl">last-byte-pos</a> = 1*<a href="#imported.abnf" class="smpl">DIGIT</a> 672 </pre><p id="rfc.section.2.1.p.5">The first-byte-pos value in a byte-range-spec gives the byte-offset of the first byte in a range. The last-byte-pos value673 gives the byte-offset of the last byte in the range; that is, the byte positions specified are inclusive. Byte offsets start674 at zero.675 < /p>676 < p id="rfc.section.2.1.p.6">Examples of byte-ranges-specifier values: </p>672 </pre><p id="rfc.section.2.1.p.5">The <a href="#rule.ranges-specifier" class="smpl">first-byte-pos</a> value in a <a href="#rule.ranges-specifier" class="smpl">byte-range-spec</a> gives the byte-offset of the first byte in a range. The <a href="#rule.ranges-specifier" class="smpl">last-byte-pos</a> value gives the byte-offset of the last byte in the range; that is, the byte positions specified are inclusive. Byte offsets 673 start at zero. 674 </p> 675 <p id="rfc.section.2.1.p.6">Examples of <a href="#rule.ranges-specifier" class="smpl">byte-ranges-specifier</a> values: 676 </p> 677 677 <ul> 678 678 <li>The first 500 bytes (byte offsets 0-499, inclusive): … … 683 683 </pre> </li> 684 684 </ul> 685 <p id="rfc.section.2.1.p.7"> If the last-byte-pos value is present, it <em class="bcp14">MUST</em> be greater than or equal to the first-byte-pos in that byte-range-spec, or the byte-range-spec is syntactically invalid. The686 recipient of a byte-range-set that includes one or more syntactically invalid byte-range-spec values <em class="bcp14">MUST</em> ignore the header field that includes that byte-range-set.687 < /p>688 <p id="rfc.section.2.1.p.8">If the last-byte-pos value is absent, or if the value is greater than or equal to the current length of the representation689 data, last-byte-pos is taken to be equal to one less than the current length of the representation in bytes.690 < /p>691 < p id="rfc.section.2.1.p.9">By its choice of last-byte-pos, a client can limit the number of bytes retrieved without knowing the size of the representation.</p>685 <p id="rfc.section.2.1.p.7">A <a href="#rule.ranges-specifier" class="smpl">byte-range-spec</a> is invalid if the <a href="#rule.ranges-specifier" class="smpl">last-byte-pos</a> value is present and less than the <a href="#rule.ranges-specifier" class="smpl">first-byte-pos</a>. 686 </p> 687 <p id="rfc.section.2.1.p.8">A client can limit the number of bytes requested without knowing the size of the selected representation. If the <a href="#rule.ranges-specifier" class="smpl">last-byte-pos</a> value is absent, or if the value is greater than or equal to the current length of the representation data, the byte range 688 is interpreted as the remainder of the representation (i.e., the server replaces the value of <a href="#rule.ranges-specifier" class="smpl">last-byte-pos</a> with a value that is one less than the current length of the selected representation). 689 </p> 690 <p id="rfc.section.2.1.p.9">A client can request the last N bytes of the selected representation using a <a href="#rule.ranges-specifier" class="smpl">suffix-byte-range-spec</a>. 691 </p> 692 692 <div id="rfc.figure.u.6"></div><pre class="inline"><span id="rfc.iref.g.11"></span><span id="rfc.iref.g.12"></span> <a href="#rule.ranges-specifier" class="smpl">suffix-byte-range-spec</a> = "-" <a href="#rule.ranges-specifier" class="smpl">suffix-length</a> 693 693 <a href="#rule.ranges-specifier" class="smpl">suffix-length</a> = 1*<a href="#imported.abnf" class="smpl">DIGIT</a> 694 </pre><p id="rfc.section.2.1.p.11">A suffix-byte-range-spec is used to specify the suffix of the representation data, of a length given by the suffix-length 695 value. (That is, this form specifies the last N bytes of a representation.) If the representation is shorter than the specified 696 suffix-length, the entire representation is used. For example (assuming a representation of length 10000): 694 </pre><p id="rfc.section.2.1.p.11">If the selected representation is shorter than the specified <a href="#rule.ranges-specifier" class="smpl">suffix-length</a>, the entire representation is used. For example (assuming a representation of length 10000): 697 695 </p> 698 696 <ul> … … 709 707 </pre> </li> 710 708 </ul> 711 <p id="rfc.section.2.1.p.12">If a syntactically valid byte-range-set includes at least one byte-range-spec whose first-byte-pos is less than the current 712 length of the representation, or at least one suffix-byte-range-spec with a non-zero suffix-length, then the byte-range-set 713 is satisfiable. Otherwise, the byte-range-set is unsatisfiable. If the byte-range-set is unsatisfiable, the server <em class="bcp14">SHOULD</em> send a response with a <a href="#status.416" class="smpl">416 (Range Not Satisfiable)</a> status code. Otherwise, the server <em class="bcp14">SHOULD</em> send a response with a <a href="#status.206" class="smpl">206 (Partial Content)</a> status code containing the satisfiable ranges of the representation. 714 </p> 715 <p id="rfc.section.2.1.p.13">In the byte range syntax, <a href="#rule.ranges-specifier" class="smpl">first-byte-pos</a>, <a href="#rule.ranges-specifier" class="smpl">last-byte-pos</a>, and <a href="#rule.ranges-specifier" class="smpl">suffix-length</a> are expressed as decimal number of octets. Since there is no predefined limit to the length of a payload, recipients <em class="bcp14">SHOULD</em> anticipate potentially large decimal numerals and prevent parsing errors due to integer conversion overflows. 709 <p id="rfc.section.2.1.p.12">If a valid <a href="#rule.ranges-specifier" class="smpl">byte-range-set</a> includes at least one <a href="#rule.ranges-specifier" class="smpl">byte-range-spec</a> with a <a href="#rule.ranges-specifier" class="smpl">first-byte-pos</a> that is less than the current length of the representation, or at least one <a href="#rule.ranges-specifier" class="smpl">suffix-byte-range-spec</a> with a non-zero <a href="#rule.ranges-specifier" class="smpl">suffix-length</a>, then the <a href="#rule.ranges-specifier" class="smpl">byte-range-set</a> is satisfiable. Otherwise, the <a href="#rule.ranges-specifier" class="smpl">byte-range-set</a> is unsatisfiable. 710 </p> 711 <p id="rfc.section.2.1.p.13">In the byte range syntax, <a href="#rule.ranges-specifier" class="smpl">first-byte-pos</a>, <a href="#rule.ranges-specifier" class="smpl">last-byte-pos</a>, and <a href="#rule.ranges-specifier" class="smpl">suffix-length</a> are expressed as decimal number of octets. Since there is no predefined limit to the length of a payload, recipients ought 712 to anticipate potentially large decimal numerals and prevent parsing errors due to integer conversion overflows. 716 713 </p> 717 714 <h2 id="rfc.section.2.2"><a href="#rfc.section.2.2">2.2</a> <a id="range.units.other" href="#range.units.other">Other Range Units</a></h2> … … 721 718 </pre><div id="rfc.iref.a.1"></div> 722 719 <h2 id="rfc.section.2.3"><a href="#rfc.section.2.3">2.3</a> <a id="header.accept-ranges" href="#header.accept-ranges">Accept-Ranges</a></h2> 723 <p id="rfc.section.2.3.p.1">The "Accept-Ranges" header field allows a resource to indicate its acceptance of range requests.</p>720 <p id="rfc.section.2.3.p.1">The "Accept-Ranges" header field allows a server to indicate that it supports range requests for the target resource.</p> 724 721 <div id="rfc.figure.u.12"></div><pre class="inline"><span id="rfc.iref.g.14"></span><span id="rfc.iref.g.15"></span> <a href="#header.accept-ranges" class="smpl">Accept-Ranges</a> = <a href="#header.accept-ranges" class="smpl">acceptable-ranges</a> 725 722 <a href="#header.accept-ranges" class="smpl">acceptable-ranges</a> = 1#<a href="#range.units" class="smpl">range-unit</a> / "none" 726 </pre><p id="rfc.section.2.3.p.3">Origin servers that accept byte-range requests <em class="bcp14">MAY</em> send723 </pre><p id="rfc.section.2.3.p.3">Origin servers that support byte-range requests <em class="bcp14">MAY</em> send 727 724 </p> 728 725 <div id="rfc.figure.u.13"></div><pre class="text"> Accept-Ranges: bytes 729 726 </pre><p id="rfc.section.2.3.p.5">but are not required to do so. Clients <em class="bcp14">MAY</em> generate range requests without having received this header field for the resource involved. Range units are defined in <a href="#range.units" title="Range Units">Section 2</a>. 730 727 </p> 731 <p id="rfc.section.2.3.p.6">Servers that do not accept any kind of range request for aresource <em class="bcp14">MAY</em> send728 <p id="rfc.section.2.3.p.6">Servers that do not support any kind of range request for the target resource resource <em class="bcp14">MAY</em> send 732 729 </p> 733 730 <div id="rfc.figure.u.14"></div><pre class="text"> Accept-Ranges: none … … 736 733 <div id="rfc.iref.r.1"></div> 737 734 <h2 id="rfc.section.3.1"><a href="#rfc.section.3.1">3.1</a> <a id="header.range" href="#header.range">Range</a></h2> 738 <p id="rfc.section.3.1.p.1">The "Range" header field on a GET request modifies the method semantics to request transfer of only one or more sub -ranges739 of the selected representation data in a successful response, rather than the entirerepresentation data.735 <p id="rfc.section.3.1.p.1">The "Range" header field on a GET request modifies the method semantics to request transfer of only one or more subranges 736 of the selected representation data, rather than the entire selected representation data. 740 737 </p> 741 738 <div id="rfc.figure.u.15"></div><pre class="inline"><span id="rfc.iref.g.16"></span> <a href="#header.range" class="smpl">Range</a> = <a href="#rule.ranges-specifier" class="smpl">byte-ranges-specifier</a> / <a href="#header.range" class="smpl">other-ranges-specifier</a> … … 746 743 server <em class="bcp14">MUST</em> ignore a Range header field received with a request method other than GET. 747 744 </p> 748 <p id="rfc.section.3.1.p.4">An origin server <em class="bcp14">MUST</em> ignore a <a href="#header.range" class="smpl">Range</a> header field that contains a range unit it does not understand. A proxy <em class="bcp14">MAY</em> either discard a <a href="#header.range" class="smpl">Range</a> header field that contains a range unit it does not understand or pass it to the next inbound server when forwarding the request. 745 <p id="rfc.section.3.1.p.4">An origin server <em class="bcp14">MUST</em> ignore a Range header field that contains a range unit it does not understand. A proxy <em class="bcp14">MAY</em> either discard a Range header field that contains a range unit it does not understand or pass it to the next inbound server 746 when forwarding the request. 749 747 </p> 750 748 <p id="rfc.section.3.1.p.5">The Range header field is evaluated after evaluating the preconditions of <a href="#Part4" id="rfc.xref.Part4.1"><cite title="Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests">[Part4]</cite></a> and only if the result of their evaluation is leading toward a <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a> response. In other words, Range is ignored when a conditional GET would result in a <a href="p4-conditional.html#status.304" class="smpl">304 (Not Modified)</a> response. … … 752 750 <p id="rfc.section.3.1.p.6">The If-Range header field (<a href="#header.if-range" id="rfc.xref.header.if-range.1" title="If-Range">Section 3.2</a>) can be used as a precondition to applying the Range header field. 753 751 </p> 754 <p id="rfc.section.3.1.p.7">If all of the preconditions are true, the server supports the Range header field for the target resource, the specified range(s) 755 are syntactically correct (as defined in <a href="#byte.ranges" title="Byte Ranges">Section 2.1</a>), and at least one of the ranges has a non-empty intersection with the current selected representation extent, then the server <em class="bcp14">MAY</em> respond with a status code of <a href="#status.206" class="smpl">206 (Partial Content)</a> and a payload containing one or more partial representations that correspond to those requested, as defined in <a href="#range.response" title="Responses to a Range Request">Section 4</a>. 752 <p id="rfc.section.3.1.p.7">If all of the preconditions are true, the server supports the Range header field for the target resource, and the specified 753 range(s) are valid and satisfiable (as defined in <a href="#byte.ranges" title="Byte Ranges">Section 2.1</a>), the server <em class="bcp14">SHOULD</em> send a <a href="#status.206" class="smpl">206 (Partial Content)</a> response with a payload containing one or more partial representations that correspond to the satisfiable ranges requested, 754 as defined in <a href="#range.response" title="Responses to a Range Request">Section 4</a>. 755 </p> 756 <p id="rfc.section.3.1.p.8">If all of the preconditions are true, the server supports the Range header field for the target resource, and the specified 757 range(s) are invalid or unsatisfiable, the server <em class="bcp14">SHOULD</em> send a <a href="#status.416" class="smpl">416 (Range Not Satisfiable)</a> response. 756 758 </p> 757 759 <div id="rfc.iref.i.1"></div> … … 771 773 validator, if the date value is not strong in the sense defined by <a href="p4-conditional.html#lastmod.comparison" title="Comparison">Section 2.2.2</a> of <a href="#Part4" id="rfc.xref.Part4.3"><cite title="Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests">[Part4]</cite></a>. (A server can distinguish between a valid HTTP-date and any form of entity-tag by examining the first two characters.) 772 774 </p> 773 <p id="rfc.section.3.2.p.6"> The If-Range header field <em class="bcp14">SHOULD</em> only be sent by clients together with a Range header field. The If-Range header field <em class="bcp14">MUST</em> be ignored if it is received in a request that does not include a Range header field. The If-Range header field <em class="bcp14">MUST</em> be ignored by a server that does not support the sub-range operation.775 <p id="rfc.section.3.2.p.6">A client <em class="bcp14">MUST NOT</em> generate an If-Range header field in a request that does not contain a <a href="#header.range" class="smpl">Range</a> header field. A server <em class="bcp14">MUST</em> ignore an If-Range header field received in a request that does not contain a <a href="#header.range" class="smpl">Range</a> header field. An origin server <em class="bcp14">MUST</em> ignore an If-Range header field received in a request for a target resource that does not support Range requests. 774 776 </p> 775 777 <p id="rfc.section.3.2.p.7">If the validator given in the If-Range header field matches the current validator for the selected representation of the target 776 resource, then the server <em class="bcp14">SHOULD</em> send the specified sub-range of the representation using a <a href="#status.206" class="smpl">206 (Partial Content)</a> response. If the validator does not match, then the server <em class="bcp14">SHOULD</em> send the entire representation using a <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a> response.778 resource, then the server <em class="bcp14">SHOULD</em> process the Range header field as requested. If the validator does not match, then the server <em class="bcp14">MUST</em> ignore the <a href="#header.range" class="smpl">Range</a> header field. 777 779 </p> 778 780 <h1 id="rfc.section.4"><a href="#rfc.section.4">4.</a> <a id="range.response" href="#range.response">Responses to a Range Request</a></h1> -
draft-ietf-httpbis/latest/p5-range.xml
r2147 r2150 229 229 </artwork></figure> 230 230 <t> 231 The first-byte-pos value in a byte-range-spec gives the byte-offset 232 of the first byte in a range. The last-byte-pos value gives the 233 byte-offset of the last byte in the range; that is, the byte 234 positions specified are inclusive. Byte offsets start at zero. 235 </t> 236 <t> 237 Examples of byte-ranges-specifier values: 231 The <x:ref>first-byte-pos</x:ref> value in a <x:ref>byte-range-spec</x:ref> 232 gives the byte-offset of the first byte in a range. 233 The <x:ref>last-byte-pos</x:ref> value gives the byte-offset of the last 234 byte in the range; that is, the byte positions specified are inclusive. 235 Byte offsets start at zero. 236 </t> 237 <t> 238 Examples of <x:ref>byte-ranges-specifier</x:ref> values: 238 239 <list style="symbols"> 239 240 <t>The first 500 bytes (byte offsets 0-499, inclusive): … … 250 251 </t> 251 252 <t> 252 If the last-byte-pos value is present, it &MUST; be greater than or 253 equal to the first-byte-pos in that byte-range-spec, or the byte-range-spec 254 is syntactically invalid. The recipient of a byte-range-set 255 that includes one or more syntactically invalid byte-range-spec 256 values &MUST; ignore the header field that includes that byte-range-set. 257 </t> 258 <t> 259 If the last-byte-pos value is absent, or if the value is greater than 260 or equal to the current length of the representation data, last-byte-pos is 261 taken to be equal to one less than the current length of the representation 262 in bytes. 263 </t> 264 <t> 265 By its choice of last-byte-pos, a client can limit the number of 266 bytes retrieved without knowing the size of the representation. 253 A <x:ref>byte-range-spec</x:ref> is invalid if the 254 <x:ref>last-byte-pos</x:ref> value is present and less than the 255 <x:ref>first-byte-pos</x:ref>. 256 </t> 257 <t> 258 A client can limit the number of bytes requested without knowing the size 259 of the selected representation. 260 If the <x:ref>last-byte-pos</x:ref> value is absent, or if the value is 261 greater than or equal to the current length of the representation data, the 262 byte range is interpreted as the remainder of the representation (i.e., the 263 server replaces the value of <x:ref>last-byte-pos</x:ref> with a value that 264 is one less than the current length of the selected representation). 265 </t> 266 <t> 267 A client can request the last N bytes of the selected representation using 268 a <x:ref>suffix-byte-range-spec</x:ref>. 267 269 </t> 268 270 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="suffix-byte-range-spec"/><iref primary="true" item="Grammar" subitem="suffix-length"/> … … 271 273 </artwork></figure> 272 274 <t> 273 A suffix-byte-range-spec is used to specify the suffix of the 274 representation data, of a length given by the suffix-length value. (That is, 275 this form specifies the last N bytes of a representation.) If the 276 representation is shorter than the specified suffix-length, the entire 277 representation is used. For example (assuming a representation of 278 length 10000): 275 If the selected representation is shorter than the specified 276 <x:ref>suffix-length</x:ref>, the entire representation is used. 277 For example (assuming a representation of length 10000): 279 278 <list style="symbols"> 280 279 <t>The final 500 bytes (byte offsets 9500-9999, inclusive): … … 302 301 </t> 303 302 <t> 304 If a syntactically valid byte-range-set includes at least one byte-range-spec 305 whose first-byte-pos is less than the current length of 306 the representation, or at least one suffix-byte-range-spec with a non-zero 307 suffix-length, then the byte-range-set is satisfiable. 308 Otherwise, the byte-range-set is unsatisfiable. If the byte-range-set 309 is unsatisfiable, the server &SHOULD; send a response with a 310 <x:ref>416 (Range Not Satisfiable)</x:ref> status code. Otherwise, the server 311 &SHOULD; send a response with a <x:ref>206 (Partial Content)</x:ref> status code 312 containing the satisfiable ranges of the representation. 303 If a valid <x:ref>byte-range-set</x:ref> includes at least one 304 <x:ref>byte-range-spec</x:ref> with a <x:ref>first-byte-pos</x:ref> that is 305 less than the current length of the representation, or at least one 306 <x:ref>suffix-byte-range-spec</x:ref> with a non-zero 307 <x:ref>suffix-length</x:ref>, then the <x:ref>byte-range-set</x:ref> is 308 satisfiable. Otherwise, the <x:ref>byte-range-set</x:ref> is unsatisfiable. 313 309 </t> 314 310 <t> 315 311 In the byte range syntax, <x:ref>first-byte-pos</x:ref>, 316 312 <x:ref>last-byte-pos</x:ref>, and <x:ref>suffix-length</x:ref> are 317 expressed as decimal number of octets. 318 to the length of a payload, recipients &SHOULD; anticipate319 potentially large decimal numerals and prevent parsing errors due to integer320 conversionoverflows.313 expressed as decimal number of octets. Since there is no predefined limit 314 to the length of a payload, recipients ought to anticipate potentially 315 large decimal numerals and prevent parsing errors due to integer conversion 316 overflows. 321 317 </t> 322 318 </section> … … 338 334 <x:anchor-alias value="acceptable-ranges"/> 339 335 <t> 340 The "Accept-Ranges" header field allows a resource to indicate341 its acceptance of range requests.336 The "Accept-Ranges" header field allows a server to indicate that it 337 supports range requests for the target resource. 342 338 </t> 343 339 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="Accept-Ranges"/><iref primary="true" item="Grammar" subitem="acceptable-ranges"/> … … 346 342 </artwork></figure> 347 343 <t> 348 Origin servers that accept byte-range requests &MAY; send344 Origin servers that support byte-range requests &MAY; send 349 345 </t> 350 346 <figure><artwork type="example"> … … 357 353 </t> 358 354 <t> 359 Servers that do not accept any kind of range request for a360 resource &MAY; send355 Servers that do not support any kind of range request for the target 356 resource resource &MAY; send 361 357 </t> 362 358 <figure><artwork type="example"> … … 378 374 <t> 379 375 The "Range" header field on a GET request modifies the method semantics to 380 request transfer of only one or more sub-ranges of the selected 381 representation data in a successful response, rather than the entire 382 representation data. 376 request transfer of only one or more subranges of the selected 377 representation data, rather than the entire selected representation data. 383 378 </t> 384 379 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="Range"/> … … 395 390 </t> 396 391 <t> 397 An origin server &MUST; ignore a <x:ref>Range</x:ref> header field that 398 contains a range unit it does not understand. A proxy &MAY; either discard 399 a <x:ref>Range</x:ref> header field that contains a range unit it does not 400 understand or pass it to the next inbound server when forwarding the 401 request. 392 An origin server &MUST; ignore a Range header field that contains a range 393 unit it does not understand. A proxy &MAY; either discard a Range header 394 field that contains a range unit it does not understand or pass it to the 395 next inbound server when forwarding the request. 402 396 </t> 403 397 <t> … … 414 408 <t> 415 409 If all of the preconditions are true, the server supports the Range header 416 field for the target resource, the specified range(s) are syntactically 417 correct (as defined in <xref target="byte.ranges"/>), and at least one of 418 the ranges has a non-empty intersection with the current selected 419 representation extent, then the server &MAY; respond with a status code of 420 <x:ref>206 (Partial Content)</x:ref> and a payload containing one or more 421 partial representations that correspond to those requested, as defined in 410 field for the target resource, and the specified range(s) are valid and 411 satisfiable (as defined in <xref target="byte.ranges"/>), the 412 server &SHOULD; send a <x:ref>206 (Partial Content)</x:ref> response with a 413 payload containing one or more partial representations that correspond to 414 the satisfiable ranges requested, as defined in 422 415 <xref target="range.response"/>. 416 </t> 417 <t> 418 If all of the preconditions are true, the server supports the Range header 419 field for the target resource, and the specified range(s) are invalid or 420 unsatisfiable, the server &SHOULD; send a 421 <x:ref>416 (Range Not Satisfiable)</x:ref> response. 423 422 </t> 424 423 </section> … … 462 461 </t> 463 462 <t> 464 The If-Range header field &SHOULD; only be sent by clients together with 465 a Range header field. The If-Range header field &MUST; be ignored if it 466 is received in a request that does not include a Range header field. 467 The If-Range header field &MUST; be ignored by a server that does not 468 support the sub-range operation. 463 A client &MUST-NOT; generate an If-Range header field in a request that 464 does not contain a <x:ref>Range</x:ref> header field. 465 A server &MUST; ignore an If-Range header field received in a request that 466 does not contain a <x:ref>Range</x:ref> header field. 467 An origin server &MUST; ignore an If-Range header field received in a 468 request for a target resource that does not support Range requests. 469 469 </t> 470 470 <t> 471 471 If the validator given in the If-Range header field matches the current 472 472 validator for the selected representation of the target resource, then 473 the server &SHOULD; send the specified sub-range of the representation 474 using a <x:ref>206 (Partial Content)</x:ref> response. If the validator 475 does not match, then the server &SHOULD; send the entire representation 476 using a <x:ref>200 (OK)</x:ref> response. 473 the server &SHOULD; process the Range header field as requested. 474 If the validator does not match, then the server &MUST; ignore the 475 <x:ref>Range</x:ref> header field. 477 476 </t> 478 477 </section>
Note: See TracChangeset
for help on using the changeset viewer.