Changeset 738 for draft-ietf-httpbis/latest
- Timestamp:
- 29/12/09 14:51:15 (13 years ago)
- Location:
- draft-ietf-httpbis/latest
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
draft-ietf-httpbis/latest/p1-messaging.html
r729 r738 404 404 <meta name="DC.Creator" content="Reschke, J. F."> 405 405 <meta name="DC.Identifier" content="urn:ietf:id:draft-ietf-httpbis-p1-messaging-latest"> 406 <meta name="DC.Date.Issued" scheme="ISO8601" content="2009-12- 01">406 <meta name="DC.Date.Issued" scheme="ISO8601" content="2009-12-29"> 407 407 <meta name="DC.Relation.Replaces" content="urn:ietf:rfc:2616"> 408 408 <meta name="DC.Description.Abstract" content="The Hypertext Transfer Protocol (HTTP) is an application-level protocol for distributed, collaborative, hypertext information systems. HTTP has been in use by the World Wide Web global information initiative since 1990. This document is Part 1 of the seven-part specification that defines the protocol referred to as "HTTP/1.1" and, taken together, obsoletes RFC 2616. Part 1 provides an overview of HTTP and its associated terminology, defines the "http" and "https" Uniform Resource Identifier (URI) schemes, defines the generic message syntax and parsing requirements for HTTP message frames, and describes general security concerns for implementations."> … … 442 442 </tr> 443 443 <tr> 444 <td class="left">Expires: Ju ne 4, 2010</td>444 <td class="left">Expires: July 2, 2010</td> 445 445 <td class="right">H. Frystyk</td> 446 446 </tr> … … 491 491 <tr> 492 492 <td class="left"></td> 493 <td class="right">December 1, 2009</td>493 <td class="right">December 29, 2009</td> 494 494 </tr> 495 495 </tbody> … … 523 523 <p>The list of Internet-Draft Shadow Directories can be accessed at <<a href="http://www.ietf.org/shadow.html">http://www.ietf.org/shadow.html</a>>. 524 524 </p> 525 <p>This Internet-Draft will expire in Ju ne 4, 2010.</p>525 <p>This Internet-Draft will expire in July 2, 2010.</p> 526 526 <h1><a id="rfc.copyrightnotice" href="#rfc.copyrightnotice">Copyright Notice</a></h1> 527 527 <p>Copyright © 2009 IETF Trust and the persons identified as the document authors. All rights reserved.</p> … … 760 760 </p> 761 761 </div> 762 <p id="rfc.section.1.2.p.3">As a syntactical convention, ABNF rule names prefixed with "obs-" denote "obsolete" grammar rules that appear for historical 763 reasons. 764 </p> 762 765 <h3 id="rfc.section.1.2.1"><a href="#rfc.section.1.2.1">1.2.1</a> <a id="notation.abnf" href="#notation.abnf">ABNF Extension: #rule</a></h3> 763 <p id="rfc.section.1.2.1.p.1"> One extension to the ABNF rules of <a href="#RFC5234" id="rfc.xref.RFC5234.3"><cite title="Augmented BNF for Syntax Specifications: ABNF">[RFC5234]</cite></a> is used to improve readability.764 </p> 765 <p id="rfc.section.1.2.1.p.2">A construct "#" is defined, similar to "*", for defining lists of elements. The full form is "<n>#<m>element" indicating at766 least <n> and at most <m> elements, each separated by a single comma (",") and optional whitespace (OWS).766 <p id="rfc.section.1.2.1.p.1">The #rule extension to the ABNF rules of <a href="#RFC5234" id="rfc.xref.RFC5234.3"><cite title="Augmented BNF for Syntax Specifications: ABNF">[RFC5234]</cite></a> is used to improve readability. 767 </p> 768 <p id="rfc.section.1.2.1.p.2">A construct "#" is defined, similar to "*", for defining comma-delimited lists of elements. The full form is "<n>#<m>element" 769 indicating at least <n> and at most <m> elements, each separated by a single comma (",") and optional whitespace (OWS, <a href="#basic.rules" title="Basic Rules">Section 1.2.2</a>). 767 770 </p> 768 771 <div id="rfc.figure.u.1"></div> … … 777 780 778 781 1#element => *( "," OWS ) element *( OWS "," [ OWS element ] ) 779 </pre><p id="rfc.section.1.2.1.p.8"> <a href="#collected.abnf" title="Collected ABNF">Appendix C</a> shows the collected ABNF, with the list rules expanded as explained above. 782 </pre><p id="rfc.section.1.2.1.p.8">Note that empty elements do not contribute to the count of elements present, though.</p> 783 <p id="rfc.section.1.2.1.p.9">For example, given these ABNF productions:</p> 784 <div id="rfc.figure.u.5"></div><pre class="text"> example-list = 1#example-list-elmt 785 example-list-elmt = token ; see <a href="#basic.rules" title="Basic Rules">Section 1.2.2</a> 786 </pre><p id="rfc.section.1.2.1.p.11">Then these are valid values for example-list (not including the double quotes, which are present for delimitation only):</p> 787 <div id="rfc.figure.u.6"></div><pre class="text"> "foo,bar" 788 " foo ,bar," 789 " foo , ,bar,charlie " 790 "foo ,bar, charlie " 791 </pre><p id="rfc.section.1.2.1.p.13">But these values would be invalid, as at least one non-empty element is required:</p> 792 <div id="rfc.figure.u.7"></div><pre class="text"> "" 793 "," 794 ", ," 795 </pre><p id="rfc.section.1.2.1.p.15"> <a href="#collected.abnf" title="Collected ABNF">Appendix C</a> shows the collected ABNF, with the list rules expanded as explained above. 780 796 </p> 781 797 <h3 id="rfc.section.1.2.2"><a href="#rfc.section.1.2.2">1.2.2</a> <a id="basic.rules" href="#basic.rules">Basic Rules</a></h3> … … 799 815 <p id="rfc.section.1.2.2.p.6"> </p> 800 816 </div> 801 <div id="rfc.figure.u. 5"></div><pre class="inline"><span id="rfc.iref.g.13"></span><span id="rfc.iref.g.14"></span><span id="rfc.iref.g.15"></span> <a href="#rule.whitespace" class="smpl">OWS</a> = *( [ obs-fold ] <a href="#core.rules" class="smpl">WSP</a> )817 <div id="rfc.figure.u.8"></div><pre class="inline"><span id="rfc.iref.g.13"></span><span id="rfc.iref.g.14"></span><span id="rfc.iref.g.15"></span> <a href="#rule.whitespace" class="smpl">OWS</a> = *( [ obs-fold ] <a href="#core.rules" class="smpl">WSP</a> ) 802 818 ; "optional" whitespace 803 819 <a href="#rule.whitespace" class="smpl">RWS</a> = 1*( [ obs-fold ] <a href="#core.rules" class="smpl">WSP</a> ) … … 811 827 </p> 812 828 </div> 813 <div id="rfc.figure.u. 6"></div><pre class="inline"><span id="rfc.iref.g.16"></span><span id="rfc.iref.g.17"></span> <a href="#rule.token.separators" class="smpl">tchar</a> = "!" / "#" / "$" / "%" / "&" / "'" / "*"829 <div id="rfc.figure.u.9"></div><pre class="inline"><span id="rfc.iref.g.16"></span><span id="rfc.iref.g.17"></span> <a href="#rule.token.separators" class="smpl">tchar</a> = "!" / "#" / "$" / "%" / "&" / "'" / "*" 814 830 / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~" 815 831 / <a href="#core.rules" class="smpl">DIGIT</a> / <a href="#core.rules" class="smpl">ALPHA</a> … … 819 835 <p id="rfc.section.1.2.2.p.10"> A string of text is parsed as a single word if it is quoted using double-quote marks.</p> 820 836 </div> 821 <div id="rfc.figure.u. 7"></div><pre class="inline"><span id="rfc.iref.g.18"></span><span id="rfc.iref.g.19"></span><span id="rfc.iref.g.20"></span> <a href="#rule.quoted-string" class="smpl">quoted-string</a> = <a href="#core.rules" class="smpl">DQUOTE</a> *( <a href="#rule.quoted-string" class="smpl">qdtext</a> / <a href="#rule.quoted-pair" class="smpl">quoted-pair</a> ) <a href="#core.rules" class="smpl">DQUOTE</a>837 <div id="rfc.figure.u.10"></div><pre class="inline"><span id="rfc.iref.g.18"></span><span id="rfc.iref.g.19"></span><span id="rfc.iref.g.20"></span> <a href="#rule.quoted-string" class="smpl">quoted-string</a> = <a href="#core.rules" class="smpl">DQUOTE</a> *( <a href="#rule.quoted-string" class="smpl">qdtext</a> / <a href="#rule.quoted-pair" class="smpl">quoted-pair</a> ) <a href="#core.rules" class="smpl">DQUOTE</a> 822 838 <a href="#rule.quoted-string" class="smpl">qdtext</a> = <a href="#rule.whitespace" class="smpl">OWS</a> / %x21 / %x23-5B / %x5D-7E / <a href="#rule.quoted-string" class="smpl">obs-text</a> 823 839 ; <a href="#rule.whitespace" class="smpl">OWS</a> / <<a href="#core.rules" class="smpl">VCHAR</a> except <a href="#core.rules" class="smpl">DQUOTE</a> and "\"> / <a href="#rule.quoted-string" class="smpl">obs-text</a> … … 826 842 <p id="rfc.section.1.2.2.p.12"> The backslash character ("\") can be used as a single-character quoting mechanism within quoted-string constructs:</p> 827 843 </div> 828 <div id="rfc.figure.u. 8"></div><pre class="inline"><span id="rfc.iref.g.21"></span> <a href="#rule.quoted-pair" class="smpl">quoted-pair</a> = "\" ( <a href="#core.rules" class="smpl">WSP</a> / <a href="#core.rules" class="smpl">VCHAR</a> / <a href="#rule.quoted-string" class="smpl">obs-text</a> )844 <div id="rfc.figure.u.11"></div><pre class="inline"><span id="rfc.iref.g.21"></span> <a href="#rule.quoted-pair" class="smpl">quoted-pair</a> = "\" ( <a href="#core.rules" class="smpl">WSP</a> / <a href="#core.rules" class="smpl">VCHAR</a> / <a href="#rule.quoted-string" class="smpl">obs-text</a> ) 829 845 </pre><p id="rfc.section.1.2.2.p.14">Producers <em class="bcp14">SHOULD NOT</em> escape characters that do not require escaping (i.e., other than DQUOTE and the backslash character). 830 846 </p> 831 847 <h3 id="rfc.section.1.2.3"><a href="#rfc.section.1.2.3">1.2.3</a> <a id="abnf.dependencies" href="#abnf.dependencies">ABNF Rules defined in other Parts of the Specification</a></h3> 832 848 <p id="rfc.section.1.2.3.p.1">The ABNF rules below are defined in other parts:</p> 833 <div id="rfc.figure.u. 9"></div><pre class="inline"> <a href="#abnf.dependencies" class="smpl">request-header</a> = <request-header, defined in <a href="#Part2" id="rfc.xref.Part2.1"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>, <a href="p2-semantics.html#request.header.fields" title="Request Header Fields">Section 3</a>>849 <div id="rfc.figure.u.12"></div><pre class="inline"> <a href="#abnf.dependencies" class="smpl">request-header</a> = <request-header, defined in <a href="#Part2" id="rfc.xref.Part2.1"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>, <a href="p2-semantics.html#request.header.fields" title="Request Header Fields">Section 3</a>> 834 850 <a href="#abnf.dependencies" class="smpl">response-header</a> = <response-header, defined in <a href="#Part2" id="rfc.xref.Part2.2"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>, <a href="p2-semantics.html#response.header.fields" title="Response Header Fields">Section 5</a>> 835 </pre><div id="rfc.figure.u.1 0"></div><pre class="inline"> <a href="#abnf.dependencies" class="smpl">entity-body</a> = <entity-body, defined in <a href="#Part3" id="rfc.xref.Part3.3"><cite title="HTTP/1.1, part 3: Message Payload and Content Negotiation">[Part3]</cite></a>, <a href="p3-payload.html#entity.body" title="Entity Body">Section 3.2</a>>851 </pre><div id="rfc.figure.u.13"></div><pre class="inline"> <a href="#abnf.dependencies" class="smpl">entity-body</a> = <entity-body, defined in <a href="#Part3" id="rfc.xref.Part3.3"><cite title="HTTP/1.1, part 3: Message Payload and Content Negotiation">[Part3]</cite></a>, <a href="p3-payload.html#entity.body" title="Entity Body">Section 3.2</a>> 836 852 <a href="#abnf.dependencies" class="smpl">entity-header</a> = <entity-header, defined in <a href="#Part3" id="rfc.xref.Part3.4"><cite title="HTTP/1.1, part 3: Message Payload and Content Negotiation">[Part3]</cite></a>, <a href="p3-payload.html#entity.header.fields" title="Entity Header Fields">Section 3.1</a>> 837 </pre><div id="rfc.figure.u.1 1"></div><pre class="inline"> <a href="#abnf.dependencies" class="smpl">Cache-Control</a> = <Cache-Control, defined in <a href="#Part6" id="rfc.xref.Part6.1"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>, <a href="p6-cache.html#header.pragma" title="Pragma">Section 3.4</a>>853 </pre><div id="rfc.figure.u.14"></div><pre class="inline"> <a href="#abnf.dependencies" class="smpl">Cache-Control</a> = <Cache-Control, defined in <a href="#Part6" id="rfc.xref.Part6.1"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>, <a href="p6-cache.html#header.pragma" title="Pragma">Section 3.4</a>> 838 854 <a href="#abnf.dependencies" class="smpl">Pragma</a> = <Pragma, defined in <a href="#Part6" id="rfc.xref.Part6.2"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>, <a href="p6-cache.html#header.pragma" title="Pragma">Section 3.4</a>> 839 855 <a href="#abnf.dependencies" class="smpl">Warning</a> = <Warning, defined in <a href="#Part6" id="rfc.xref.Part6.3"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>, <a href="p6-cache.html#header.warning" title="Warning">Section 3.6</a>> … … 861 877 (O). 862 878 </p> 863 <div id="rfc.figure.u.1 2"></div><pre class="drawing"> request chain ------------------------>879 <div id="rfc.figure.u.15"></div><pre class="drawing"> request chain ------------------------> 864 880 UA -------------------v------------------- O 865 881 <----------------------- response chain … … 876 892 </p> 877 893 <p id="rfc.section.2.1.p.7">The following example illustrates a typical message exchange for a GET request on the URI "http://www.example.com/hello.txt":</p> 878 <div id="rfc.figure.u.1 3"></div>894 <div id="rfc.figure.u.16"></div> 879 895 <p>client request:</p><pre class="text2">GET /hello.txt HTTP/1.1 880 896 User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3 … … 882 898 Accept: */* 883 899 884 </pre><div id="rfc.figure.u.1 4"></div>900 </pre><div id="rfc.figure.u.17"></div> 885 901 <p>server response:</p><pre class="text">HTTP/1.1 200 OK 886 902 Date: Mon, 27 Jul 2009 12:28:53 GMT … … 899 915 proxy, gateway, or tunnel, switching behavior based on the nature of each request. 900 916 </p> 901 <div id="rfc.figure.u.1 5"></div><pre class="drawing"> request chain -------------------------------------->917 <div id="rfc.figure.u.18"></div><pre class="drawing"> request chain --------------------------------------> 902 918 UA -----v----- A -----v----- B -----v----- C -----v----- O 903 919 <------------------------------------- response chain … … 943 959 from O (via C) for a request which has not been cached by UA or A. 944 960 </p> 945 <div id="rfc.figure.u.1 6"></div><pre class="drawing"> request chain ---------->961 <div id="rfc.figure.u.19"></div><pre class="drawing"> request chain ----------> 946 962 UA -----v----- A -----v----- B - - - - - - C - - - - - - O 947 963 <--------- response chain … … 978 994 </p> 979 995 <p id="rfc.section.2.5.p.2">The version of an HTTP message is indicated by an HTTP-Version field in the first line of the message. HTTP-Version is case-sensitive.</p> 980 <div id="rfc.figure.u. 17"></div><pre class="inline"><span id="rfc.iref.g.23"></span><span id="rfc.iref.g.24"></span> <a href="#http.version" class="smpl">HTTP-Version</a> = <a href="#http.version" class="smpl">HTTP-Prot-Name</a> "/" 1*<a href="#core.rules" class="smpl">DIGIT</a> "." 1*<a href="#core.rules" class="smpl">DIGIT</a>996 <div id="rfc.figure.u.20"></div><pre class="inline"><span id="rfc.iref.g.23"></span><span id="rfc.iref.g.24"></span> <a href="#http.version" class="smpl">HTTP-Version</a> = <a href="#http.version" class="smpl">HTTP-Prot-Name</a> "/" 1*<a href="#core.rules" class="smpl">DIGIT</a> "." 1*<a href="#core.rules" class="smpl">DIGIT</a> 981 997 <a href="#http.version" class="smpl">HTTP-Prot-Name</a> = %x48.54.54.50 ; "HTTP", case-sensitive 982 998 </pre><p id="rfc.section.2.5.p.4">Note that the major and minor numbers <em class="bcp14">MUST</em> be treated as separate integers and that each <em class="bcp14">MAY</em> be incremented higher than a single digit. Thus, HTTP/2.4 is a lower version than HTTP/2.13, which in turn is lower than HTTP/12.3. … … 1007 1023 "path-absolute", "query", and "authority" from <a href="#RFC3986" id="rfc.xref.RFC3986.4"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>. In addition, we define a partial-URI rule for protocol elements that allow a relative URI without a fragment. 1008 1024 </p> 1009 <div id="rfc.figure.u. 18"></div><pre class="inline"><span id="rfc.iref.g.25"></span><span id="rfc.iref.g.26"></span><span id="rfc.iref.g.27"></span><span id="rfc.iref.g.28"></span><span id="rfc.iref.g.29"></span><span id="rfc.iref.g.30"></span><span id="rfc.iref.g.31"></span> <a href="#uri" class="smpl">URI</a> = <URI, defined in <a href="#RFC3986" id="rfc.xref.RFC3986.5"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="http://tools.ietf.org/html/rfc3986#section-3">Section 3</a>>1025 <div id="rfc.figure.u.21"></div><pre class="inline"><span id="rfc.iref.g.25"></span><span id="rfc.iref.g.26"></span><span id="rfc.iref.g.27"></span><span id="rfc.iref.g.28"></span><span id="rfc.iref.g.29"></span><span id="rfc.iref.g.30"></span><span id="rfc.iref.g.31"></span> <a href="#uri" class="smpl">URI</a> = <URI, defined in <a href="#RFC3986" id="rfc.xref.RFC3986.5"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="http://tools.ietf.org/html/rfc3986#section-3">Section 3</a>> 1010 1026 <a href="#uri" class="smpl">URI-reference</a> = <URI-reference, defined in <a href="#RFC3986" id="rfc.xref.RFC3986.6"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="http://tools.ietf.org/html/rfc3986#section-4.1">Section 4.1</a>> 1011 1027 <a href="#uri" class="smpl">absolute-URI</a> = <absolute-URI, defined in <a href="#RFC3986" id="rfc.xref.RFC3986.7"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="http://tools.ietf.org/html/rfc3986#section-4.3">Section 4.3</a>> … … 1032 1048 data corresponding to a resource for which that server might provide an HTTP interface. 1033 1049 </p> 1034 <div id="rfc.figure.u. 19"></div><pre class="inline"><span id="rfc.iref.g.32"></span> <a href="#http.uri" class="smpl">http-URI</a> = "http:" "//" <a href="#uri" class="smpl">authority</a> <a href="#uri" class="smpl">path-abempty</a> [ "?" <a href="#uri" class="smpl">query</a> ]1050 <div id="rfc.figure.u.22"></div><pre class="inline"><span id="rfc.iref.g.32"></span> <a href="#http.uri" class="smpl">http-URI</a> = "http:" "//" <a href="#uri" class="smpl">authority</a> <a href="#uri" class="smpl">path-abempty</a> [ "?" <a href="#uri" class="smpl">query</a> ] 1035 1051 </pre><p id="rfc.section.2.6.1.p.3">The host identifier within an <a href="#uri" class="smpl">authority</a> component is defined in <a href="#RFC3986" id="rfc.xref.RFC3986.15"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="http://tools.ietf.org/html/rfc3986#section-3.2.2">Section 3.2.2</a>. If host is provided as an IP literal or IPv4 address, then the HTTP server is any listener on the indicated TCP port at 1036 1052 that IP address. If host is a registered name, then that name is considered an indirect identifier and the recipient might … … 1061 1077 port subcomponent is empty or not given. 1062 1078 </p> 1063 <div id="rfc.figure.u.2 0"></div><pre class="inline"><span id="rfc.iref.g.33"></span> <a href="#https.uri" class="smpl">https-URI</a> = "https:" "//" <a href="#uri" class="smpl">authority</a> <a href="#uri" class="smpl">path-abempty</a> [ "?" <a href="#uri" class="smpl">query</a> ]1079 <div id="rfc.figure.u.23"></div><pre class="inline"><span id="rfc.iref.g.33"></span> <a href="#https.uri" class="smpl">https-URI</a> = "https:" "//" <a href="#uri" class="smpl">authority</a> <a href="#uri" class="smpl">path-abempty</a> [ "?" <a href="#uri" class="smpl">query</a> ] 1064 1080 </pre><p id="rfc.section.2.6.2.p.3">The primary difference between the "http" and "https" schemes is that interaction with the latter is required to be secured 1065 1081 for privacy through the use of strong encryption. The URI cannot be sent in a request until the connection is secure. Likewise, … … 1079 1095 </p> 1080 1096 <p id="rfc.section.2.6.3.p.3">For example, the following three URIs are equivalent:</p> 1081 <div id="rfc.figure.u.2 1"></div><pre class="text"> http://example.com:80/~smith/home.html1097 <div id="rfc.figure.u.24"></div><pre class="text"> http://example.com:80/~smith/home.html 1082 1098 http://EXAMPLE.com/%7Esmith/home.html 1083 1099 http://EXAMPLE.com:/%7esmith/home.html … … 1099 1115 or invalid request method) and clients are implemented to only expect a response. 1100 1116 </p> 1101 <div id="rfc.figure.u.2 2"></div><pre class="inline"><span id="rfc.iref.g.34"></span> <a href="#http.message" class="smpl">HTTP-message</a> = <a href="#http.message" class="smpl">start-line</a>1117 <div id="rfc.figure.u.25"></div><pre class="inline"><span id="rfc.iref.g.34"></span> <a href="#http.message" class="smpl">HTTP-message</a> = <a href="#http.message" class="smpl">start-line</a> 1102 1118 *( <a href="#header.fields" class="smpl">header-field</a> <a href="#core.rules" class="smpl">CRLF</a> ) 1103 1119 <a href="#core.rules" class="smpl">CRLF</a> … … 1127 1143 value. 1128 1144 </p> 1129 <div id="rfc.figure.u.2 3"></div><pre class="inline"><span id="rfc.iref.g.35"></span><span id="rfc.iref.g.36"></span><span id="rfc.iref.g.37"></span><span id="rfc.iref.g.38"></span> <a href="#header.fields" class="smpl">header-field</a> = <a href="#header.fields" class="smpl">field-name</a> ":" <a href="#rule.whitespace" class="smpl">OWS</a> [ <a href="#header.fields" class="smpl">field-value</a> ] <a href="#rule.whitespace" class="smpl">OWS</a>1145 <div id="rfc.figure.u.26"></div><pre class="inline"><span id="rfc.iref.g.35"></span><span id="rfc.iref.g.36"></span><span id="rfc.iref.g.37"></span><span id="rfc.iref.g.38"></span> <a href="#header.fields" class="smpl">header-field</a> = <a href="#header.fields" class="smpl">field-name</a> ":" <a href="#rule.whitespace" class="smpl">OWS</a> [ <a href="#header.fields" class="smpl">field-value</a> ] <a href="#rule.whitespace" class="smpl">OWS</a> 1130 1146 <a href="#header.fields" class="smpl">field-name</a> = <a href="#rule.token.separators" class="smpl">token</a> 1131 1147 <a href="#header.fields" class="smpl">field-value</a> = *( <a href="#header.fields" class="smpl">field-content</a> / <a href="#rule.whitespace" class="smpl">OWS</a> ) … … 1167 1183 </p> 1168 1184 </div> 1169 <div id="rfc.figure.u.2 4"></div><pre class="inline"><span id="rfc.iref.g.39"></span><span id="rfc.iref.g.40"></span> <a href="#rule.comment" class="smpl">comment</a> = "(" *( <a href="#rule.comment" class="smpl">ctext</a> / <a href="#rule.quoted-cpair" class="smpl">quoted-cpair</a> / <a href="#rule.comment" class="smpl">comment</a> ) ")"1185 <div id="rfc.figure.u.27"></div><pre class="inline"><span id="rfc.iref.g.39"></span><span id="rfc.iref.g.40"></span> <a href="#rule.comment" class="smpl">comment</a> = "(" *( <a href="#rule.comment" class="smpl">ctext</a> / <a href="#rule.quoted-cpair" class="smpl">quoted-cpair</a> / <a href="#rule.comment" class="smpl">comment</a> ) ")" 1170 1186 <a href="#rule.comment" class="smpl">ctext</a> = <a href="#rule.whitespace" class="smpl">OWS</a> / %x21-27 / %x2A-5B / %x5D-7E / <a href="#rule.quoted-string" class="smpl">obs-text</a> 1171 1187 ; <a href="#rule.whitespace" class="smpl">OWS</a> / <<a href="#core.rules" class="smpl">VCHAR</a> except "(", ")", and "\"> / <a href="#rule.quoted-string" class="smpl">obs-text</a> … … 1173 1189 <p id="rfc.section.3.2.p.12"> The backslash character ("\") can be used as a single-character quoting mechanism within comment constructs:</p> 1174 1190 </div> 1175 <div id="rfc.figure.u.2 5"></div><pre class="inline"><span id="rfc.iref.g.41"></span> <a href="#rule.quoted-cpair" class="smpl">quoted-cpair</a> = "\" ( <a href="#core.rules" class="smpl">WSP</a> / <a href="#core.rules" class="smpl">VCHAR</a> / <a href="#rule.quoted-string" class="smpl">obs-text</a> )1191 <div id="rfc.figure.u.28"></div><pre class="inline"><span id="rfc.iref.g.41"></span> <a href="#rule.quoted-cpair" class="smpl">quoted-cpair</a> = "\" ( <a href="#core.rules" class="smpl">WSP</a> / <a href="#core.rules" class="smpl">VCHAR</a> / <a href="#rule.quoted-string" class="smpl">obs-text</a> ) 1176 1192 </pre><p id="rfc.section.3.2.p.14">Producers <em class="bcp14">SHOULD NOT</em> escape characters that do not require escaping (i.e., other than the backslash character "\" and the parentheses "(" and ")"). 1177 1193 </p> … … 1181 1197 header field (<a href="#header.transfer-encoding" id="rfc.xref.header.transfer-encoding.1" title="Transfer-Encoding">Section 9.7</a>). 1182 1198 </p> 1183 <div id="rfc.figure.u.2 6"></div><pre class="inline"><span id="rfc.iref.g.42"></span> <a href="#message.body" class="smpl">message-body</a> = <a href="#abnf.dependencies" class="smpl">entity-body</a>1199 <div id="rfc.figure.u.29"></div><pre class="inline"><span id="rfc.iref.g.42"></span> <a href="#message.body" class="smpl">message-body</a> = <a href="#abnf.dependencies" class="smpl">entity-body</a> 1184 1200 / <entity-body encoded as per <a href="#header.transfer-encoding" class="smpl">Transfer-Encoding</a>> 1185 1201 </pre><p id="rfc.section.3.3.p.3">Transfer-Encoding <em class="bcp14">MUST</em> be used to indicate any transfer-codings applied by an application to ensure safe and proper transfer of the message. Transfer-Encoding … … 1248 1264 to the entity being transferred. These header fields apply only to the message being transmitted. 1249 1265 </p> 1250 <div id="rfc.figure.u. 27"></div><pre class="inline"><span id="rfc.iref.g.43"></span> <a href="#general.header.fields" class="smpl">general-header</a> = <a href="#abnf.dependencies" class="smpl">Cache-Control</a> ; <a href="#Part6" id="rfc.xref.Part6.5"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>, <a href="p6-cache.html#header.cache-control" title="Cache-Control">Section 3.2</a>1266 <div id="rfc.figure.u.30"></div><pre class="inline"><span id="rfc.iref.g.43"></span> <a href="#general.header.fields" class="smpl">general-header</a> = <a href="#abnf.dependencies" class="smpl">Cache-Control</a> ; <a href="#Part6" id="rfc.xref.Part6.5"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>, <a href="p6-cache.html#header.cache-control" title="Cache-Control">Section 3.2</a> 1251 1267 / <a href="#header.connection" class="smpl">Connection</a> ; <a href="#header.connection" id="rfc.xref.header.connection.1" title="Connection">Section 9.1</a> 1252 1268 / <a href="#header.date" class="smpl">Date</a> ; <a href="#header.date" id="rfc.xref.header.date.1" title="Date">Section 9.3</a> … … 1265 1281 resource, the identifier of the resource, and the protocol version in use. 1266 1282 </p> 1267 <div id="rfc.figure.u. 28"></div><pre class="inline"><span id="rfc.iref.g.44"></span> <a href="#request" class="smpl">Request</a> = <a href="#request-line" class="smpl">Request-Line</a> ; <a href="#request-line" title="Request-Line">Section 4.1</a>1283 <div id="rfc.figure.u.31"></div><pre class="inline"><span id="rfc.iref.g.44"></span> <a href="#request" class="smpl">Request</a> = <a href="#request-line" class="smpl">Request-Line</a> ; <a href="#request-line" title="Request-Line">Section 4.1</a> 1268 1284 *(( <a href="#general.header.fields" class="smpl">general-header</a> ; <a href="#general.header.fields" title="General Header Fields">Section 3.5</a> 1269 1285 / <a href="#abnf.dependencies" class="smpl">request-header</a> ; <a href="#Part2" id="rfc.xref.Part2.3"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>, <a href="p2-semantics.html#request.header.fields" title="Request Header Fields">Section 3</a> … … 1275 1291 The elements are separated by SP characters. No CR or LF is allowed except in the final CRLF sequence. 1276 1292 </p> 1277 <div id="rfc.figure.u. 29"></div><pre class="inline"><span id="rfc.iref.g.45"></span> <a href="#request-line" class="smpl">Request-Line</a> = <a href="#method" class="smpl">Method</a> <a href="#core.rules" class="smpl">SP</a> <a href="#request-target" class="smpl">request-target</a> <a href="#core.rules" class="smpl">SP</a> <a href="#http.version" class="smpl">HTTP-Version</a> <a href="#core.rules" class="smpl">CRLF</a>1293 <div id="rfc.figure.u.32"></div><pre class="inline"><span id="rfc.iref.g.45"></span> <a href="#request-line" class="smpl">Request-Line</a> = <a href="#method" class="smpl">Method</a> <a href="#core.rules" class="smpl">SP</a> <a href="#request-target" class="smpl">request-target</a> <a href="#core.rules" class="smpl">SP</a> <a href="#http.version" class="smpl">HTTP-Version</a> <a href="#core.rules" class="smpl">CRLF</a> 1278 1294 </pre><h3 id="rfc.section.4.1.1"><a href="#rfc.section.4.1.1">4.1.1</a> <a id="method" href="#method">Method</a></h3> 1279 1295 <p id="rfc.section.4.1.1.p.1">The Method token indicates the method to be performed on the resource identified by the request-target. The method is case-sensitive.</p> 1280 <div id="rfc.figure.u.3 0"></div><pre class="inline"><span id="rfc.iref.g.46"></span><span id="rfc.iref.g.47"></span> <a href="#method" class="smpl">Method</a> = <a href="#rule.token.separators" class="smpl">token</a>1296 <div id="rfc.figure.u.33"></div><pre class="inline"><span id="rfc.iref.g.46"></span><span id="rfc.iref.g.47"></span> <a href="#method" class="smpl">Method</a> = <a href="#rule.token.separators" class="smpl">token</a> 1281 1297 </pre><h3 id="rfc.section.4.1.2"><a href="#rfc.section.4.1.2">4.1.2</a> <a id="request-target" href="#request-target">request-target</a></h3> 1282 1298 <p id="rfc.section.4.1.2.p.1">The request-target identifies the resource upon which to apply the request.</p> 1283 <div id="rfc.figure.u.3 1"></div><pre class="inline"><span id="rfc.iref.g.48"></span> <a href="#request-target" class="smpl">request-target</a> = "*"1299 <div id="rfc.figure.u.34"></div><pre class="inline"><span id="rfc.iref.g.48"></span> <a href="#request-target" class="smpl">request-target</a> = "*" 1284 1300 / <a href="#uri" class="smpl">absolute-URI</a> 1285 1301 / ( <a href="#uri" class="smpl">path-absolute</a> [ "?" <a href="#uri" class="smpl">query</a> ] ) … … 1289 1305 apply to a resource. One example would be 1290 1306 </p> 1291 <div id="rfc.figure.u.3 2"></div><pre class="text"> OPTIONS * HTTP/1.11307 <div id="rfc.figure.u.35"></div><pre class="text"> OPTIONS * HTTP/1.1 1292 1308 </pre><p id="rfc.section.4.1.2.p.5">The absolute-URI form is <em class="bcp14">REQUIRED</em> when the request is being made to a proxy. The proxy is requested to forward the request or service it from a valid cache, 1293 1309 and return the response. Note that the proxy <em class="bcp14">MAY</em> forward the request on to another proxy or directly to the server specified by the absolute-URI. In order to avoid request … … 1295 1311 Request-Line would be: 1296 1312 </p> 1297 <div id="rfc.figure.u.3 3"></div><pre class="text"> GET http://www.example.org/pub/WWW/TheProject.html HTTP/1.11313 <div id="rfc.figure.u.36"></div><pre class="text"> GET http://www.example.org/pub/WWW/TheProject.html HTTP/1.1 1298 1314 </pre><p id="rfc.section.4.1.2.p.7">To allow for transition to absolute-URIs in all requests in future versions of HTTP, all HTTP/1.1 servers <em class="bcp14">MUST</em> accept the absolute-URI form in requests, even though HTTP/1.1 clients will only generate them in requests to proxies. 1299 1315 </p> … … 1304 1320 server would create a TCP connection to port 80 of the host "www.example.org" and send the lines: 1305 1321 </p> 1306 <div id="rfc.figure.u.3 4"></div><pre class="text"> GET /pub/WWW/TheProject.html HTTP/1.11322 <div id="rfc.figure.u.37"></div><pre class="text"> GET /pub/WWW/TheProject.html HTTP/1.1 1307 1323 Host: www.example.org 1308 1324 </pre><p id="rfc.section.4.1.2.p.11">followed by the remainder of the Request. Note that the absolute path cannot be empty; if none is present in the original … … 1312 1328 asterisk form of request-target, then the last proxy on the request chain <em class="bcp14">MUST</em> forward the request with "*" as the final request-target. 1313 1329 </p> 1314 <div id="rfc.figure.u.3 5"></div>1330 <div id="rfc.figure.u.38"></div> 1315 1331 <p>For example, the request</p><pre class="text"> OPTIONS http://www.example.org:8001 HTTP/1.1 1316 </pre><div id="rfc.figure.u.3 6"></div>1332 </pre><div id="rfc.figure.u.39"></div> 1317 1333 <p>would be forwarded by the proxy as</p><pre class="text"> OPTIONS * HTTP/1.1 1318 1334 Host: www.example.org:8001 … … 1357 1373 <h1 id="rfc.section.5"><a href="#rfc.section.5">5.</a> <a id="response" href="#response">Response</a></h1> 1358 1374 <p id="rfc.section.5.p.1">After receiving and interpreting a request message, a server responds with an HTTP response message.</p> 1359 <div id="rfc.figure.u. 37"></div><pre class="inline"><span id="rfc.iref.g.49"></span> <a href="#response" class="smpl">Response</a> = <a href="#status-line" class="smpl">Status-Line</a> ; <a href="#status-line" title="Status-Line">Section 5.1</a>1375 <div id="rfc.figure.u.40"></div><pre class="inline"><span id="rfc.iref.g.49"></span> <a href="#response" class="smpl">Response</a> = <a href="#status-line" class="smpl">Status-Line</a> ; <a href="#status-line" title="Status-Line">Section 5.1</a> 1360 1376 *(( <a href="#general.header.fields" class="smpl">general-header</a> ; <a href="#general.header.fields" title="General Header Fields">Section 3.5</a> 1361 1377 / <a href="#abnf.dependencies" class="smpl">response-header</a> ; <a href="#Part2" id="rfc.xref.Part2.6"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>, <a href="p2-semantics.html#response.header.fields" title="Response Header Fields">Section 5</a> … … 1368 1384 CRLF sequence. 1369 1385 </p> 1370 <div id="rfc.figure.u. 38"></div><pre class="inline"><span id="rfc.iref.g.50"></span> <a href="#status-line" class="smpl">Status-Line</a> = <a href="#http.version" class="smpl">HTTP-Version</a> <a href="#core.rules" class="smpl">SP</a> <a href="#status.code.and.reason.phrase" class="smpl">Status-Code</a> <a href="#core.rules" class="smpl">SP</a> <a href="#status.code.and.reason.phrase" class="smpl">Reason-Phrase</a> <a href="#core.rules" class="smpl">CRLF</a>1386 <div id="rfc.figure.u.41"></div><pre class="inline"><span id="rfc.iref.g.50"></span> <a href="#status-line" class="smpl">Status-Line</a> = <a href="#http.version" class="smpl">HTTP-Version</a> <a href="#core.rules" class="smpl">SP</a> <a href="#status.code.and.reason.phrase" class="smpl">Status-Code</a> <a href="#core.rules" class="smpl">SP</a> <a href="#status.code.and.reason.phrase" class="smpl">Reason-Phrase</a> <a href="#core.rules" class="smpl">CRLF</a> 1371 1387 </pre><h3 id="rfc.section.5.1.1"><a href="#rfc.section.5.1.1">5.1.1</a> <a id="status.code.and.reason.phrase" href="#status.code.and.reason.phrase">Status Code and Reason Phrase</a></h3> 1372 1388 <p id="rfc.section.5.1.1.p.1">The Status-Code element is a 3-digit integer result code of the attempt to understand and satisfy the request. These codes … … 1385 1401 <li>5xx: Server Error - The server failed to fulfill an apparently valid request</li> 1386 1402 </ul> 1387 <div id="rfc.figure.u. 39"></div><pre class="inline"><span id="rfc.iref.g.51"></span><span id="rfc.iref.g.52"></span><span id="rfc.iref.g.53"></span> <a href="#status.code.and.reason.phrase" class="smpl">Status-Code</a> = 3<a href="#core.rules" class="smpl">DIGIT</a>1403 <div id="rfc.figure.u.42"></div><pre class="inline"><span id="rfc.iref.g.51"></span><span id="rfc.iref.g.52"></span><span id="rfc.iref.g.53"></span> <a href="#status.code.and.reason.phrase" class="smpl">Status-Code</a> = 3<a href="#core.rules" class="smpl">DIGIT</a> 1388 1404 <a href="#status.code.and.reason.phrase" class="smpl">Reason-Phrase</a> = *( <a href="#core.rules" class="smpl">WSP</a> / <a href="#core.rules" class="smpl">VCHAR</a> / <a href="#rule.quoted-string" class="smpl">obs-text</a> ) 1389 1405 </pre><h1 id="rfc.section.6"><a href="#rfc.section.6">6.</a> <a id="protocol.parameters" href="#protocol.parameters">Protocol Parameters</a></h1> 1390 1406 <h2 id="rfc.section.6.1"><a href="#rfc.section.6.1">6.1</a> <a id="date.time.formats.full.date" href="#date.time.formats.full.date">Date/Time Formats: Full Date</a></h2> 1391 1407 <p id="rfc.section.6.1.p.1">HTTP applications have historically allowed three different formats for the representation of date/time stamps:</p> 1392 <div id="rfc.figure.u.4 0"></div><pre class="text"> Sun, 06 Nov 1994 08:49:37 GMT ; RFC 11231408 <div id="rfc.figure.u.43"></div><pre class="text"> Sun, 06 Nov 1994 08:49:37 GMT ; RFC 1123 1393 1409 Sunday, 06-Nov-94 08:49:37 GMT ; obsolete RFC 850 format 1394 1410 Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format … … 1400 1416 time zone, and <em class="bcp14">MUST</em> be assumed when reading the asctime format. HTTP-date is case sensitive and <em class="bcp14">MUST NOT</em> include additional whitespace beyond that specifically included as SP in the grammar. 1401 1417 </p> 1402 <div id="rfc.figure.u.4 1"></div><pre class="inline"><span id="rfc.iref.g.54"></span> <a href="#date.time.formats.full.date" class="smpl">HTTP-date</a> = <a href="#preferred.date.format" class="smpl">rfc1123-date</a> / <a href="#obsolete.date.formats" class="smpl">obs-date</a>1418 <div id="rfc.figure.u.44"></div><pre class="inline"><span id="rfc.iref.g.54"></span> <a href="#date.time.formats.full.date" class="smpl">HTTP-date</a> = <a href="#preferred.date.format" class="smpl">rfc1123-date</a> / <a href="#obsolete.date.formats" class="smpl">obs-date</a> 1403 1419 </pre><div id="preferred.date.format"> 1404 1420 <p id="rfc.section.6.1.p.6"> Preferred format:</p> 1405 1421 </div> 1406 <div id="rfc.figure.u.4 2"></div><pre class="inline"><span id="rfc.iref.g.55"></span><span id="rfc.iref.g.56"></span><span id="rfc.iref.g.57"></span><span id="rfc.iref.g.58"></span><span id="rfc.iref.g.59"></span><span id="rfc.iref.g.60"></span><span id="rfc.iref.g.61"></span><span id="rfc.iref.g.62"></span><span id="rfc.iref.g.63"></span><span id="rfc.iref.g.64"></span><span id="rfc.iref.g.65"></span><span id="rfc.iref.g.66"></span> <a href="#preferred.date.format" class="smpl">rfc1123-date</a> = <a href="#preferred.date.format" class="smpl">day-name</a> "," <a href="#core.rules" class="smpl">SP</a> date1 <a href="#core.rules" class="smpl">SP</a> <a href="#preferred.date.format" class="smpl">time-of-day</a> <a href="#core.rules" class="smpl">SP</a> <a href="#preferred.date.format" class="smpl">GMT</a>1422 <div id="rfc.figure.u.45"></div><pre class="inline"><span id="rfc.iref.g.55"></span><span id="rfc.iref.g.56"></span><span id="rfc.iref.g.57"></span><span id="rfc.iref.g.58"></span><span id="rfc.iref.g.59"></span><span id="rfc.iref.g.60"></span><span id="rfc.iref.g.61"></span><span id="rfc.iref.g.62"></span><span id="rfc.iref.g.63"></span><span id="rfc.iref.g.64"></span><span id="rfc.iref.g.65"></span><span id="rfc.iref.g.66"></span> <a href="#preferred.date.format" class="smpl">rfc1123-date</a> = <a href="#preferred.date.format" class="smpl">day-name</a> "," <a href="#core.rules" class="smpl">SP</a> date1 <a href="#core.rules" class="smpl">SP</a> <a href="#preferred.date.format" class="smpl">time-of-day</a> <a href="#core.rules" class="smpl">SP</a> <a href="#preferred.date.format" class="smpl">GMT</a> 1407 1423 1408 1424 <a href="#preferred.date.format" class="smpl">day-name</a> = %x4D.6F.6E ; "Mon", case-sensitive … … 1445 1461 <p id="rfc.section.6.1.p.9"> Obsolete formats:</p> 1446 1462 </div> 1447 <div id="rfc.figure.u.4 3"></div><pre class="inline"><span id="rfc.iref.g.67"></span> <a href="#obsolete.date.formats" class="smpl">obs-date</a> = <a href="#obsolete.date.formats" class="smpl">rfc850-date</a> / <a href="#obsolete.date.formats" class="smpl">asctime-date</a>1448 </pre><div id="rfc.figure.u.4 4"></div><pre class="inline"><span id="rfc.iref.g.68"></span> <a href="#obsolete.date.formats" class="smpl">rfc850-date</a> = <a href="#obsolete.date.formats" class="smpl">day-name-l</a> "," <a href="#core.rules" class="smpl">SP</a> <a href="#obsolete.date.formats" class="smpl">date2</a> <a href="#core.rules" class="smpl">SP</a> <a href="#preferred.date.format" class="smpl">time-of-day</a> <a href="#core.rules" class="smpl">SP</a> <a href="#preferred.date.format" class="smpl">GMT</a>1463 <div id="rfc.figure.u.46"></div><pre class="inline"><span id="rfc.iref.g.67"></span> <a href="#obsolete.date.formats" class="smpl">obs-date</a> = <a href="#obsolete.date.formats" class="smpl">rfc850-date</a> / <a href="#obsolete.date.formats" class="smpl">asctime-date</a> 1464 </pre><div id="rfc.figure.u.47"></div><pre class="inline"><span id="rfc.iref.g.68"></span> <a href="#obsolete.date.formats" class="smpl">rfc850-date</a> = <a href="#obsolete.date.formats" class="smpl">day-name-l</a> "," <a href="#core.rules" class="smpl">SP</a> <a href="#obsolete.date.formats" class="smpl">date2</a> <a href="#core.rules" class="smpl">SP</a> <a href="#preferred.date.format" class="smpl">time-of-day</a> <a href="#core.rules" class="smpl">SP</a> <a href="#preferred.date.format" class="smpl">GMT</a> 1449 1465 <a href="#obsolete.date.formats" class="smpl">date2</a> = <a href="#preferred.date.format" class="smpl">day</a> "-" <a href="#preferred.date.format" class="smpl">month</a> "-" 2<a href="#core.rules" class="smpl">DIGIT</a> 1450 1466 ; day-month-year (e.g., 02-Jun-82) … … 1457 1473 / %x53.61.74.75.72.64.61.79 ; "Saturday", case-sensitive 1458 1474 / %x53.75.6E.64.61.79 ; "Sunday", case-sensitive 1459 </pre><div id="rfc.figure.u.4 5"></div><pre class="inline"><span id="rfc.iref.g.69"></span> <a href="#obsolete.date.formats" class="smpl">asctime-date</a> = <a href="#preferred.date.format" class="smpl">day-name</a> <a href="#core.rules" class="smpl">SP</a> <a href="#obsolete.date.formats" class="smpl">date3</a> <a href="#core.rules" class="smpl">SP</a> <a href="#preferred.date.format" class="smpl">time-of-day</a> <a href="#core.rules" class="smpl">SP</a> <a href="#preferred.date.format" class="smpl">year</a>1475 </pre><div id="rfc.figure.u.48"></div><pre class="inline"><span id="rfc.iref.g.69"></span> <a href="#obsolete.date.formats" class="smpl">asctime-date</a> = <a href="#preferred.date.format" class="smpl">day-name</a> <a href="#core.rules" class="smpl">SP</a> <a href="#obsolete.date.formats" class="smpl">date3</a> <a href="#core.rules" class="smpl">SP</a> <a href="#preferred.date.format" class="smpl">time-of-day</a> <a href="#core.rules" class="smpl">SP</a> <a href="#preferred.date.format" class="smpl">year</a> 1460 1476 <a href="#obsolete.date.formats" class="smpl">date3</a> = <a href="#preferred.date.format" class="smpl">month</a> <a href="#core.rules" class="smpl">SP</a> ( 2<a href="#core.rules" class="smpl">DIGIT</a> / ( <a href="#core.rules" class="smpl">SP</a> 1<a href="#core.rules" class="smpl">DIGIT</a> )) 1461 1477 ; month day (e.g., Jun 2) … … 1475 1491 is a property of the message, not of the original entity. 1476 1492 </p> 1477 <div id="rfc.figure.u.4 6"></div><pre class="inline"><span id="rfc.iref.g.70"></span><span id="rfc.iref.g.71"></span> <a href="#transfer.codings" class="smpl">transfer-coding</a> = "chunked" ; <a href="#chunked.encoding" title="Chunked Transfer Coding">Section 6.2.1</a>1493 <div id="rfc.figure.u.49"></div><pre class="inline"><span id="rfc.iref.g.70"></span><span id="rfc.iref.g.71"></span> <a href="#transfer.codings" class="smpl">transfer-coding</a> = "chunked" ; <a href="#chunked.encoding" title="Chunked Transfer Coding">Section 6.2.1</a> 1478 1494 / "compress" ; <a href="#compress.coding" title="Compress Coding">Section 6.2.2.1</a> 1479 1495 / "deflate" ; <a href="#deflate.coding" title="Deflate Coding">Section 6.2.2.2</a> … … 1484 1500 <p id="rfc.section.6.2.p.3"> Parameters are in the form of attribute/value pairs.</p> 1485 1501 </div> 1486 <div id="rfc.figure.u. 47"></div><pre class="inline"><span id="rfc.iref.g.72"></span><span id="rfc.iref.g.73"></span><span id="rfc.iref.g.74"></span><span id="rfc.iref.g.75"></span><span id="rfc.iref.g.76"></span> <a href="#rule.parameter" class="smpl">transfer-parameter</a> = <a href="#rule.parameter" class="smpl">attribute</a> <a href="#rule.whitespace" class="smpl">BWS</a> "=" <a href="#rule.whitespace" class="smpl">BWS</a> <a href="#rule.parameter" class="smpl">value</a>1502 <div id="rfc.figure.u.50"></div><pre class="inline"><span id="rfc.iref.g.72"></span><span id="rfc.iref.g.73"></span><span id="rfc.iref.g.74"></span><span id="rfc.iref.g.75"></span><span id="rfc.iref.g.76"></span> <a href="#rule.parameter" class="smpl">transfer-parameter</a> = <a href="#rule.parameter" class="smpl">attribute</a> <a href="#rule.whitespace" class="smpl">BWS</a> "=" <a href="#rule.whitespace" class="smpl">BWS</a> <a href="#rule.parameter" class="smpl">value</a> 1487 1503 <a href="#rule.parameter" class="smpl">attribute</a> = <a href="#rule.token.separators" class="smpl">token</a> 1488 1504 <a href="#rule.parameter" class="smpl">value</a> = <a href="#rule.token.separators" class="smpl">token</a> / <a href="#rule.quoted-string" class="smpl">quoted-string</a> … … 1506 1522 necessary for the recipient to verify that it has received the full message. 1507 1523 </p> 1508 <div id="rfc.figure.u. 48"></div><pre class="inline"><span id="rfc.iref.g.77"></span><span id="rfc.iref.g.78"></span><span id="rfc.iref.g.79"></span><span id="rfc.iref.g.80"></span><span id="rfc.iref.g.81"></span><span id="rfc.iref.g.82"></span><span id="rfc.iref.g.83"></span><span id="rfc.iref.g.84"></span><span id="rfc.iref.g.85"></span><span id="rfc.iref.g.86"></span><span id="rfc.iref.g.87"></span> <a href="#chunked.encoding" class="smpl">Chunked-Body</a> = *<a href="#chunked.encoding" class="smpl">chunk</a>1524 <div id="rfc.figure.u.51"></div><pre class="inline"><span id="rfc.iref.g.77"></span><span id="rfc.iref.g.78"></span><span id="rfc.iref.g.79"></span><span id="rfc.iref.g.80"></span><span id="rfc.iref.g.81"></span><span id="rfc.iref.g.82"></span><span id="rfc.iref.g.83"></span><span id="rfc.iref.g.84"></span><span id="rfc.iref.g.85"></span><span id="rfc.iref.g.86"></span><span id="rfc.iref.g.87"></span> <a href="#chunked.encoding" class="smpl">Chunked-Body</a> = *<a href="#chunked.encoding" class="smpl">chunk</a> 1509 1525 <a href="#chunked.encoding" class="smpl">last-chunk</a> 1510 1526 <a href="#chunked.encoding" class="smpl">trailer-part</a> … … 1549 1565 </p> 1550 1566 <p id="rfc.section.6.2.1.p.7">A process for decoding the "chunked" transfer-coding can be represented in pseudo-code as:</p> 1551 <div id="rfc.figure.u. 49"></div><pre class="text"> length := 01567 <div id="rfc.figure.u.52"></div><pre class="text"> length := 0 1552 1568 read chunk-size, chunk-ext (if any) and CRLF 1553 1569 while (chunk-size > 0) { … … 1612 1628 By convention, the products are listed in order of their significance for identifying the application. 1613 1629 </p> 1614 <div id="rfc.figure.u.5 0"></div><pre class="inline"><span id="rfc.iref.g.89"></span><span id="rfc.iref.g.90"></span> <a href="#product.tokens" class="smpl">product</a> = <a href="#rule.token.separators" class="smpl">token</a> ["/" <a href="#product.tokens" class="smpl">product-version</a>]1630 <div id="rfc.figure.u.53"></div><pre class="inline"><span id="rfc.iref.g.89"></span><span id="rfc.iref.g.90"></span> <a href="#product.tokens" class="smpl">product</a> = <a href="#rule.token.separators" class="smpl">token</a> ["/" <a href="#product.tokens" class="smpl">product-version</a>] 1615 1631 <a href="#product.tokens" class="smpl">product-version</a> = <a href="#rule.token.separators" class="smpl">token</a> 1616 1632 </pre><p id="rfc.section.6.3.p.3">Examples:</p> 1617 <div id="rfc.figure.u.5 1"></div><pre class="text"> User-Agent: CERN-LineMode/2.15 libwww/2.17b31633 <div id="rfc.figure.u.54"></div><pre class="text"> User-Agent: CERN-LineMode/2.15 libwww/2.17b3 1618 1634 Server: Apache/0.8.4 1619 1635 </pre><p id="rfc.section.6.3.p.5">Product tokens <em class="bcp14">SHOULD</em> be short and to the point. They <em class="bcp14">MUST NOT</em> be used for advertising or other non-essential information. Although any token character <em class="bcp14">MAY</em> appear in a product-version, this token <em class="bcp14">SHOULD</em> only be used for a version identifier (i.e., successive versions of the same product <em class="bcp14">SHOULD</em> only differ in the product-version portion of the product value). … … 1624 1640 a quality value of 0, then content with this parameter is `not acceptable' for the client. HTTP/1.1 applications <em class="bcp14">MUST NOT</em> generate more than three digits after the decimal point. User configuration of these values <em class="bcp14">SHOULD</em> also be limited in this fashion. 1625 1641 </p> 1626 <div id="rfc.figure.u.5 2"></div><pre class="inline"><span id="rfc.iref.g.91"></span> <a href="#quality.values" class="smpl">qvalue</a> = ( "0" [ "." 0*3<a href="#core.rules" class="smpl">DIGIT</a> ] )1642 <div id="rfc.figure.u.55"></div><pre class="inline"><span id="rfc.iref.g.91"></span> <a href="#quality.values" class="smpl">qvalue</a> = ( "0" [ "." 0*3<a href="#core.rules" class="smpl">DIGIT</a> ] ) 1627 1643 / ( "1" [ "." 0*3("0") ] ) 1628 1644 </pre><div class="note"> … … 1845 1861 </p> 1846 1862 <p id="rfc.section.9.1.p.2">The Connection header's value has the following grammar:</p> 1847 <div id="rfc.figure.u.5 3"></div><pre class="inline"><span id="rfc.iref.g.92"></span><span id="rfc.iref.g.93"></span><span id="rfc.iref.g.94"></span> <a href="#header.connection" class="smpl">Connection</a> = "Connection" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.connection" class="smpl">Connection-v</a>1863 <div id="rfc.figure.u.56"></div><pre class="inline"><span id="rfc.iref.g.92"></span><span id="rfc.iref.g.93"></span><span id="rfc.iref.g.94"></span> <a href="#header.connection" class="smpl">Connection</a> = "Connection" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.connection" class="smpl">Connection-v</a> 1848 1864 <a href="#header.connection" class="smpl">Connection-v</a> = 1#<a href="#header.connection" class="smpl">connection-token</a> 1849 1865 <a href="#header.connection" class="smpl">connection-token</a> = <a href="#rule.token.separators" class="smpl">token</a> … … 1858 1874 of the response. For example, 1859 1875 </p> 1860 <div id="rfc.figure.u.5 4"></div><pre class="text"> Connection: close1876 <div id="rfc.figure.u.57"></div><pre class="text"> Connection: close 1861 1877 </pre><p id="rfc.section.9.1.p.8">in either the request or the response header fields indicates that the connection <em class="bcp14">SHOULD NOT</em> be considered `persistent' (<a href="#persistent.connections" title="Persistent Connections">Section 7.1</a>) after the current request/response is complete. 1862 1878 </p> … … 1874 1890 to the HEAD method, it indicates the size of the entity-body that would have been sent had the request been a GET. 1875 1891 </p> 1876 <div id="rfc.figure.u.5 5"></div><pre class="inline"><span id="rfc.iref.g.95"></span><span id="rfc.iref.g.96"></span> <a href="#header.content-length" class="smpl">Content-Length</a> = "Content-Length" ":" <a href="#rule.whitespace" class="smpl">OWS</a> 1*<a href="#header.content-length" class="smpl">Content-Length-v</a>1892 <div id="rfc.figure.u.58"></div><pre class="inline"><span id="rfc.iref.g.95"></span><span id="rfc.iref.g.96"></span> <a href="#header.content-length" class="smpl">Content-Length</a> = "Content-Length" ":" <a href="#rule.whitespace" class="smpl">OWS</a> 1*<a href="#header.content-length" class="smpl">Content-Length-v</a> 1877 1893 <a href="#header.content-length" class="smpl">Content-Length-v</a> = 1*<a href="#core.rules" class="smpl">DIGIT</a> 1878 1894 </pre><p id="rfc.section.9.2.p.3">An example is</p> 1879 <div id="rfc.figure.u.5 6"></div><pre class="text"> Content-Length: 34951895 <div id="rfc.figure.u.59"></div><pre class="text"> Content-Length: 3495 1880 1896 </pre><p id="rfc.section.9.2.p.5">Applications <em class="bcp14">SHOULD</em> use this field to indicate the transfer-length of the message-body, unless this is prohibited by the rules in <a href="#message.length" title="Message Length">Section 3.4</a>. 1881 1897 </p> … … 1892 1908 as the Origination Date Field (orig-date) defined in <a href="http://tools.ietf.org/html/rfc5322#section-3.6.1">Section 3.6.1</a> of <a href="#RFC5322" id="rfc.xref.RFC5322.4"><cite title="Internet Message Format">[RFC5322]</cite></a>. The field value is an HTTP-date, as described in <a href="#date.time.formats.full.date" title="Date/Time Formats: Full Date">Section 6.1</a>; it <em class="bcp14">MUST</em> be sent in rfc1123-date format. 1893 1909 </p> 1894 <div id="rfc.figure.u. 57"></div><pre class="inline"><span id="rfc.iref.g.97"></span><span id="rfc.iref.g.98"></span> <a href="#header.date" class="smpl">Date</a> = "Date" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.date" class="smpl">Date-v</a>1910 <div id="rfc.figure.u.60"></div><pre class="inline"><span id="rfc.iref.g.97"></span><span id="rfc.iref.g.98"></span> <a href="#header.date" class="smpl">Date</a> = "Date" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.date" class="smpl">Date-v</a> 1895 1911 <a href="#header.date" class="smpl">Date-v</a> = <a href="#date.time.formats.full.date" class="smpl">HTTP-date</a> 1896 1912 </pre><p id="rfc.section.9.3.p.3">An example is</p> 1897 <div id="rfc.figure.u. 58"></div><pre class="text"> Date: Tue, 15 Nov 1994 08:12:31 GMT1913 <div id="rfc.figure.u.61"></div><pre class="text"> Date: Tue, 15 Nov 1994 08:12:31 GMT 1898 1914 </pre><p id="rfc.section.9.3.p.5">Origin servers <em class="bcp14">MUST</em> include a Date header field in all responses, except in these cases: 1899 1915 </p> … … 1933 1949 resource (generally an http URI, as described in <a href="#http.uri" title="http URI scheme">Section 2.6.1</a>). 1934 1950 </p> 1935 <div id="rfc.figure.u. 59"></div><pre class="inline"><span id="rfc.iref.g.99"></span><span id="rfc.iref.g.100"></span> <a href="#header.host" class="smpl">Host</a> = "Host" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.host" class="smpl">Host-v</a>1951 <div id="rfc.figure.u.62"></div><pre class="inline"><span id="rfc.iref.g.99"></span><span id="rfc.iref.g.100"></span> <a href="#header.host" class="smpl">Host</a> = "Host" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.host" class="smpl">Host-v</a> 1936 1952 <a href="#header.host" class="smpl">Host-v</a> = <a href="#uri" class="smpl">uri-host</a> [ ":" <a href="#uri" class="smpl">port</a> ] ; <a href="#http.uri" title="http URI scheme">Section 2.6.1</a> 1937 1953 </pre><p id="rfc.section.9.4.p.4">A "host" without any trailing port information implies the default port for the service requested (e.g., "80" for an HTTP 1938 1954 URL). For example, a request on the origin server for <http://www.example.org/pub/WWW/> would properly include: 1939 1955 </p> 1940 <div id="rfc.figure.u.6 0"></div><pre class="text"> GET /pub/WWW/ HTTP/1.11956 <div id="rfc.figure.u.63"></div><pre class="text"> GET /pub/WWW/ HTTP/1.1 1941 1957 Host: www.example.org 1942 1958 </pre><p id="rfc.section.9.4.p.6">A client <em class="bcp14">MUST</em> include a Host header field in all HTTP/1.1 request messages. If the requested URI does not include an Internet host name … … 1955 1971 accept parameters (as described in <a href="#transfer.codings" title="Transfer Codings">Section 6.2</a>). 1956 1972 </p> 1957 <div id="rfc.figure.u.6 1"></div><pre class="inline"><span id="rfc.iref.g.101"></span><span id="rfc.iref.g.102"></span><span id="rfc.iref.g.103"></span><span id="rfc.iref.g.104"></span><span id="rfc.iref.g.105"></span> <a href="#header.te" class="smpl">TE</a> = "TE" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.te" class="smpl">TE-v</a>1973 <div id="rfc.figure.u.64"></div><pre class="inline"><span id="rfc.iref.g.101"></span><span id="rfc.iref.g.102"></span><span id="rfc.iref.g.103"></span><span id="rfc.iref.g.104"></span><span id="rfc.iref.g.105"></span> <a href="#header.te" class="smpl">TE</a> = "TE" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.te" class="smpl">TE-v</a> 1958 1974 <a href="#header.te" class="smpl">TE-v</a> = #<a href="#header.te" class="smpl">t-codings</a> 1959 1975 <a href="#header.te" class="smpl">t-codings</a> = "trailers" / ( <a href="#transfer.codings" class="smpl">transfer-extension</a> [ <a href="#header.te" class="smpl">te-params</a> ] ) … … 1964 1980 </p> 1965 1981 <p id="rfc.section.9.5.p.5">Examples of its use are:</p> 1966 <div id="rfc.figure.u.6 2"></div><pre class="text"> TE: deflate1982 <div id="rfc.figure.u.65"></div><pre class="text"> TE: deflate 1967 1983 TE: 1968 1984 TE: trailers, deflate;q=0.5 … … 2001 2017 with chunked transfer-coding. 2002 2018 </p> 2003 <div id="rfc.figure.u.6 3"></div><pre class="inline"><span id="rfc.iref.g.106"></span><span id="rfc.iref.g.107"></span> <a href="#header.trailer" class="smpl">Trailer</a> = "Trailer" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.trailer" class="smpl">Trailer-v</a>2019 <div id="rfc.figure.u.66"></div><pre class="inline"><span id="rfc.iref.g.106"></span><span id="rfc.iref.g.107"></span> <a href="#header.trailer" class="smpl">Trailer</a> = "Trailer" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.trailer" class="smpl">Trailer-v</a> 2004 2020 <a href="#header.trailer" class="smpl">Trailer-v</a> = 1#<a href="#header.fields" class="smpl">field-name</a> 2005 2021 </pre><p id="rfc.section.9.6.p.3">An HTTP/1.1 message <em class="bcp14">SHOULD</em> include a Trailer header field in a message using chunked transfer-coding with a non-empty trailer. Doing so allows the recipient … … 2022 2038 are not. 2023 2039 </p> 2024 <div id="rfc.figure.u.6 4"></div><pre class="inline"><span id="rfc.iref.g.108"></span><span id="rfc.iref.g.109"></span> <a href="#header.transfer-encoding" class="smpl">Transfer-Encoding</a> = "Transfer-Encoding" ":" <a href="#rule.whitespace" class="smpl">OWS</a>2040 <div id="rfc.figure.u.67"></div><pre class="inline"><span id="rfc.iref.g.108"></span><span id="rfc.iref.g.109"></span> <a href="#header.transfer-encoding" class="smpl">Transfer-Encoding</a> = "Transfer-Encoding" ":" <a href="#rule.whitespace" class="smpl">OWS</a> 2025 2041 <a href="#header.transfer-encoding" class="smpl">Transfer-Encoding-v</a> 2026 2042 <a href="#header.transfer-encoding" class="smpl">Transfer-Encoding-v</a> = 1#<a href="#transfer.codings" class="smpl">transfer-coding</a> 2027 2043 </pre><p id="rfc.section.9.7.p.3">Transfer-codings are defined in <a href="#transfer.codings" title="Transfer Codings">Section 6.2</a>. An example is: 2028 2044 </p> 2029 <div id="rfc.figure.u.6 5"></div><pre class="text"> Transfer-Encoding: chunked2045 <div id="rfc.figure.u.68"></div><pre class="text"> Transfer-Encoding: chunked 2030 2046 </pre><p id="rfc.section.9.7.p.5">If multiple encodings have been applied to an entity, the transfer-codings <em class="bcp14">MUST</em> be listed in the order in which they were applied. Additional information about the encoding parameters <em class="bcp14">MAY</em> be provided by other entity-header fields not defined by this specification. 2031 2047 </p> … … 2038 2054 to. 2039 2055 </p> 2040 <div id="rfc.figure.u.6 6"></div><pre class="inline"><span id="rfc.iref.g.110"></span><span id="rfc.iref.g.111"></span> <a href="#header.upgrade" class="smpl">Upgrade</a> = "Upgrade" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.upgrade" class="smpl">Upgrade-v</a>2056 <div id="rfc.figure.u.69"></div><pre class="inline"><span id="rfc.iref.g.110"></span><span id="rfc.iref.g.111"></span> <a href="#header.upgrade" class="smpl">Upgrade</a> = "Upgrade" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.upgrade" class="smpl">Upgrade-v</a> 2041 2057 <a href="#header.upgrade" class="smpl">Upgrade-v</a> = 1#<a href="#product.tokens" class="smpl">product</a> 2042 2058 </pre><p id="rfc.section.9.8.p.3">For example,</p> 2043 <div id="rfc.figure.u. 67"></div><pre class="text"> Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x112059 <div id="rfc.figure.u.70"></div><pre class="text"> Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11 2044 2060 </pre><p id="rfc.section.9.8.p.5">The Upgrade header field is intended to provide a simple mechanism for transition from HTTP/1.1 to some other, incompatible 2045 2061 protocol. It does so by allowing the client to advertise its desire to use another protocol, such as a later version of HTTP … … 2094 2110 of all senders along the request/response chain. 2095 2111 </p> 2096 <div id="rfc.figure.u. 68"></div><pre class="inline"><span id="rfc.iref.g.112"></span><span id="rfc.iref.g.113"></span><span id="rfc.iref.g.114"></span><span id="rfc.iref.g.115"></span><span id="rfc.iref.g.116"></span><span id="rfc.iref.g.117"></span><span id="rfc.iref.g.118"></span> <a href="#header.via" class="smpl">Via</a> = "Via" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.via" class="smpl">Via-v</a>2112 <div id="rfc.figure.u.71"></div><pre class="inline"><span id="rfc.iref.g.112"></span><span id="rfc.iref.g.113"></span><span id="rfc.iref.g.114"></span><span id="rfc.iref.g.115"></span><span id="rfc.iref.g.116"></span><span id="rfc.iref.g.117"></span><span id="rfc.iref.g.118"></span> <a href="#header.via" class="smpl">Via</a> = "Via" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.via" class="smpl">Via-v</a> 2097 2113 <a href="#header.via" class="smpl">Via-v</a> = 1#( <a href="#header.via" class="smpl">received-protocol</a> <a href="#rule.whitespace" class="smpl">RWS</a> <a href="#header.via" class="smpl">received-by</a> 2098 2114 [ <a href="#rule.whitespace" class="smpl">RWS</a> <a href="#rule.comment" class="smpl">comment</a> ] ) … … 2119 2135 server at www.example.com. The request received by www.example.com would then have the following Via header field: 2120 2136 </p> 2121 <div id="rfc.figure.u. 69"></div><pre class="text"> Via: 1.0 fred, 1.1 p.example.net (Apache/1.1)2137 <div id="rfc.figure.u.72"></div><pre class="text"> Via: 1.0 fred, 1.1 p.example.net (Apache/1.1) 2122 2138 </pre><p id="rfc.section.9.9.p.9">Proxies and gateways used as a portal through a network firewall <em class="bcp14">SHOULD NOT</em>, by default, forward the names and ports of hosts within the firewall region. This information <em class="bcp14">SHOULD</em> only be propagated if explicitly enabled. If not enabled, the received-by host of any host behind the firewall <em class="bcp14">SHOULD</em> be replaced by an appropriate pseudonym for that host. 2123 2139 </p> … … 2125 2141 For example, 2126 2142 </p> 2127 <div id="rfc.figure.u.7 0"></div><pre class="text"> Via: 1.0 ricky, 1.1 ethel, 1.1 fred, 1.0 lucy2143 <div id="rfc.figure.u.73"></div><pre class="text"> Via: 1.0 ricky, 1.1 ethel, 1.1 fred, 1.0 lucy 2128 2144 </pre><p id="rfc.section.9.9.p.12">could be collapsed to</p> 2129 <div id="rfc.figure.u.7 1"></div><pre class="text"> Via: 1.0 ricky, 1.1 mertz, 1.0 lucy2145 <div id="rfc.figure.u.74"></div><pre class="text"> Via: 1.0 ricky, 1.1 mertz, 1.0 lucy 2130 2146 </pre><p id="rfc.section.9.9.p.14">Applications <em class="bcp14">SHOULD NOT</em> combine multiple entries unless they are all under the same organizational control and the hosts have already been replaced 2131 2147 by pseudonyms. Applications <em class="bcp14">MUST NOT</em> combine entries which have different received-protocol values. … … 2843 2859 </p> 2844 2860 <h1 id="rfc.section.C"><a href="#rfc.section.C">C.</a> <a id="collected.abnf" href="#collected.abnf">Collected ABNF</a></h1> 2845 <div id="rfc.figure.u.7 2"></div> <pre class="inline"><a href="#rule.whitespace" class="smpl">BWS</a> = OWS2861 <div id="rfc.figure.u.75"></div> <pre class="inline"><a href="#rule.whitespace" class="smpl">BWS</a> = OWS 2846 2862 2847 2863 <a href="#abnf.dependencies" class="smpl">Cache-Control</a> = <Cache-Control, defined in [Part6], Section 3.4> … … 3031 3047 3032 3048 <a href="#preferred.date.format" class="smpl">year</a> = 4DIGIT 3033 </pre> <div id="rfc.figure.u.7 3"></div>3049 </pre> <div id="rfc.figure.u.76"></div> 3034 3050 <p>ABNF diagnostics:</p><pre class="inline">; Chunked-Body defined but not used 3035 3051 ; Content-Length defined but not used -
draft-ietf-httpbis/latest/p1-messaging.xml
r729 r738 338 338 and WSP (whitespace). 339 339 </t> 340 <t> 341 As a syntactical convention, ABNF rule names prefixed with "obs-" denote 342 "obsolete" grammar rules that appear for historical reasons. 343 </t> 340 344 341 345 <section title="ABNF Extension: #rule" anchor="notation.abnf"> 342 <t> 343 One extension to the ABNF rules of <xref target="RFC5234"/> is used to 344 improve readability. 345 </t> 346 <t> 347 A construct "#" is defined, similar to "*", for defining lists of 348 elements. The full form is "<n>#<m>element" indicating at least 349 <n> and at most <m> elements, each separated by a single comma 350 (",") and optional whitespace (OWS). 351 </t> 352 <figure><preamble> 353 Thus, 346 <t> 347 The #rule extension to the ABNF rules of <xref target="RFC5234"/> is used to 348 improve readability. 349 </t> 350 <t> 351 A construct "#" is defined, similar to "*", for defining comma-delimited 352 lists of elements. The full form is "<n>#<m>element" indicating 353 at least <n> and at most <m> elements, each separated by a single 354 comma (",") and optional whitespace (OWS, 355 <xref target="basic.rules"/>). 356 </t> 357 <figure><preamble> 358 Thus, 354 359 </preamble><artwork type="example"> 355 360 1#element => element *( OWS "," OWS element ) 356 361 </artwork></figure> 357 358 362 <figure><preamble> 363 and: 359 364 </preamble><artwork type="example"> 360 365 #element => [ 1#element ] 361 366 </artwork></figure> 362 363 367 <figure><preamble> 368 and for n >= 1 and m > 1: 364 369 </preamble><artwork type="example"> 365 370 <n>#<m>element => element <n-1>*<m-1>( OWS "," OWS element ) 366 371 </artwork></figure> 367 368 369 370 372 <t> 373 For compatibility with legacy list rules, recipients &SHOULD; accept empty 374 list elements. In other words, consumers would follow the list productions: 375 </t> 371 376 <figure><artwork type="example"> 372 377 #element => [ ( "," / element ) *( OWS "," [ OWS element ] ) ] 373 378 374 379 1#element => *( "," OWS ) element *( OWS "," [ OWS element ] ) 375 </artwork></figure> 380 </artwork></figure> 381 <t> 382 Note that empty elements do not contribute to the count of elements present, 383 though. 384 </t> 385 <t> 386 For example, given these ABNF productions: 387 </t> 388 <figure><artwork type="example"> 389 example-list = 1#example-list-elmt 390 example-list-elmt = token ; see <xref target="basic.rules"/> 391 </artwork></figure> 392 <t> 393 Then these are valid values for example-list (not including the double 394 quotes, which are present for delimitation only): 395 </t> 396 <figure><artwork type="example"> 397 "foo,bar" 398 " foo ,bar," 399 " foo , ,bar,charlie " 400 "foo ,bar, charlie " 401 </artwork></figure> 402 <t> 403 But these values would be invalid, as at least one non-empty element is 404 required: 405 </t> 406 <figure><artwork type="example"> 407 "" 408 "," 409 ", ," 410 </artwork></figure> 376 411 <t> 377 412 <xref target="collected.abnf"/> shows the collected ABNF, with the list rules
Note: See TracChangeset
for help on using the changeset viewer.