Changeset 1557 for draft-ietf-httpbis/latest/p1-messaging.xml
- Timestamp:
- 03/03/12 23:56:54 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
draft-ietf-httpbis/latest/p1-messaging.xml
r1556 r1557 702 702 703 703 <section title="Protocol Versioning" anchor="http.version"> 704 <x:anchor-alias value="HTTP- Version"/>705 <x:anchor-alias value="HTTP- Prot-Name"/>704 <x:anchor-alias value="HTTP-version"/> 705 <x:anchor-alias value="HTTP-name"/> 706 706 <t> 707 707 HTTP uses a "<major>.<minor>" numbering scheme to indicate … … 712 712 </t> 713 713 <t> 714 The version of an HTTP message is indicated by an HTTP- Version field715 in the first line of the message. HTTP- Version is case-sensitive.716 </t> 717 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="HTTP- Version"/><iref primary="true" item="Grammar" subitem="HTTP-Prot-Name"/>718 <x:ref>HTTP- Version</x:ref> = <x:ref>HTTP-Prot-Name</x:ref> "/" <x:ref>DIGIT</x:ref> "." <x:ref>DIGIT</x:ref>719 <x:ref>HTTP- Prot-Name</x:ref> = <x:abnf-char-sequence>"HTTP"</x:abnf-char-sequence> ; "HTTP", case-sensitive714 The version of an HTTP message is indicated by an HTTP-version field 715 in the first line of the message. HTTP-version is case-sensitive. 716 </t> 717 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="HTTP-version"/><iref primary="true" item="Grammar" subitem="HTTP-name"/> 718 <x:ref>HTTP-version</x:ref> = <x:ref>HTTP-name</x:ref> "/" <x:ref>DIGIT</x:ref> "." <x:ref>DIGIT</x:ref> 719 <x:ref>HTTP-name</x:ref> = <x:abnf-char-sequence>"HTTP"</x:abnf-char-sequence> ; "HTTP", case-sensitive 720 720 </artwork></figure> 721 721 <t> … … 764 764 <t> 765 765 Intermediaries that process HTTP messages (i.e., all intermediaries 766 other than those acting as tunnels) &MUST; send their own HTTP- Version766 other than those acting as tunnels) &MUST; send their own HTTP-version 767 767 in forwarded messages. In other words, they &MUST-NOT; blindly 768 768 forward the first line of an HTTP message without ensuring that the … … 770 770 intermediary is conformant for both the receiving and 771 771 sending of messages. Forwarding an HTTP message without rewriting 772 the HTTP- Version might result in communication errors when downstream772 the HTTP-version might result in communication errors when downstream 773 773 recipients use the message sender's version to determine what features 774 774 are safe to use for later communication with that sender. … … 803 803 version responses, such as when a client fails to parse the version 804 804 number correctly or when an intermediary is known to blindly forward 805 the HTTP- Version even when it doesn't conform to the given minor805 the HTTP-version even when it doesn't conform to the given minor 806 806 version of the protocol. Such protocol downgrades &SHOULD-NOT; be 807 807 performed unless triggered by specific client attributes, such as when … … 1083 1083 An HTTP message can either be a request from client to server or a 1084 1084 response from server to client. Syntactically, the two types of message 1085 differ only in the start-line, which is either a Request-Line (for requests)1086 or a Status-Line (for responses), and in the algorithm for determining1085 differ only in the start-line, which is either a request-line (for requests) 1086 or a status-line (for responses), and in the algorithm for determining 1087 1087 the length of the message body (<xref target="message.body"/>). 1088 1088 In theory, a client could receive requests and a server could receive … … 1093 1093 </t> 1094 1094 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="start-line"/> 1095 <x:ref>start-line</x:ref> = <x:ref> Request-Line</x:ref> / <x:ref>Status-Line</x:ref>1095 <x:ref>start-line</x:ref> = <x:ref>request-line</x:ref> / <x:ref>status-line</x:ref> 1096 1096 </artwork></figure> 1097 1097 <t> … … 1108 1108 </t> 1109 1109 1110 <section title="Request -Line" anchor="request.line">1110 <section title="Request Line" anchor="request.line"> 1111 1111 <x:anchor-alias value="Request"/> 1112 <x:anchor-alias value=" Request-Line"/>1113 <t> 1114 The Request-Line begins with a method token, followed by a single1112 <x:anchor-alias value="request-line"/> 1113 <t> 1114 A request-line begins with a method token, followed by a single 1115 1115 space (SP), the request-target, another single space (SP), the 1116 1116 protocol version, and ending with CRLF. 1117 1117 </t> 1118 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem=" Request-Line"/>1119 <x:ref> Request-Line</x:ref> = <x:ref>Method</x:ref> <x:ref>SP</x:ref> <x:ref>request-target</x:ref> <x:ref>SP</x:ref> <x:ref>HTTP-Version</x:ref> <x:ref>CRLF</x:ref>1118 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="request-line"/> 1119 <x:ref>request-line</x:ref> = <x:ref>method</x:ref> <x:ref>SP</x:ref> <x:ref>request-target</x:ref> <x:ref>SP</x:ref> <x:ref>HTTP-version</x:ref> <x:ref>CRLF</x:ref> 1120 1120 </artwork></figure> 1121 1121 1122 1122 <section title="Method" anchor="method"> 1123 <x:anchor-alias value=" Method"/>1124 <t> 1125 The Method token indicates the request method to be performed on the1123 <x:anchor-alias value="method"/> 1124 <t> 1125 The method token indicates the request method to be performed on the 1126 1126 target resource. The request method is case-sensitive. 1127 1127 </t> 1128 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem=" Method"/>1129 <x:ref> Method</x:ref> = <x:ref>token</x:ref>1128 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="method"/> 1129 <x:ref>method</x:ref> = <x:ref>token</x:ref> 1130 1130 </artwork></figure> 1131 1131 <t> 1132 See &method; for further information, such as the list of methods defined 1133 by this specification, the IANA registry, and considerations for new methods. 1132 The methods defined by this specification can be found in 1133 &method;, along with information regarding the HTTP method registry 1134 and considerations for defining new methods. 1134 1135 </t> 1135 1136 </section> … … 1170 1171 </section> 1171 1172 1172 <section title="Response Status -Line" anchor="status.line">1173 <x:anchor-alias value=" Response"/>1174 <x:anchor-alias value=" Status-Line"/>1175 <t> 1176 The first line of a Response message is the Status-Line, consisting1173 <section title="Response Status Line" anchor="status.line"> 1174 <x:anchor-alias value="response"/> 1175 <x:anchor-alias value="status-line"/> 1176 <t> 1177 The first line of a response message is the status-line, consisting 1177 1178 of the protocol version, a space (SP), the status code, another space, 1178 1179 a possibly-empty textual phrase describing the status code, and 1179 1180 ending with CRLF. 1180 1181 </t> 1181 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem=" Status-Line"/>1182 <x:ref> Status-Line</x:ref> = <x:ref>HTTP-Version</x:ref> <x:ref>SP</x:ref> <x:ref>Status-Code</x:ref> <x:ref>SP</x:ref> <x:ref>Reason-Phrase</x:ref> <x:ref>CRLF</x:ref>1182 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="status-line"/> 1183 <x:ref>status-line</x:ref> = <x:ref>HTTP-version</x:ref> <x:ref>SP</x:ref> <x:ref>status-code</x:ref> <x:ref>SP</x:ref> <x:ref>reason-phrase</x:ref> <x:ref>CRLF</x:ref> 1183 1184 </artwork></figure> 1184 1185 1185 1186 <section title="Status Code" anchor="status.code"> 1186 <x:anchor-alias value=" Status-Code"/>1187 <t> 1188 The Status-Code element is a 3-digit integer result code of the attempt to1187 <x:anchor-alias value="status-code"/> 1188 <t> 1189 The status-code element is a 3-digit integer result code of the attempt to 1189 1190 understand and satisfy the request. See &status-code-reasonphr; for 1190 1191 further information, such as the list of status codes defined by this 1191 1192 specification, the IANA registry, and considerations for new status codes. 1192 1193 </t> 1193 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem=" Status-Code"/>1194 <x:ref> Status-Code</x:ref> = 3<x:ref>DIGIT</x:ref>1194 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="status-code"/> 1195 <x:ref>status-code</x:ref> = 3<x:ref>DIGIT</x:ref> 1195 1196 </artwork></figure> 1196 1197 </section> 1197 1198 1198 1199 <section title="Reason Phrase" anchor="reason.phrase"> 1199 <x:anchor-alias value=" Reason-Phrase"/>1200 <x:anchor-alias value="reason-phrase"/> 1200 1201 <t> 1201 1202 The Reason Phrase exists for the sole purpose of providing a textual … … 1205 1206 Phrase. 1206 1207 </t> 1207 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem=" Reason-Phrase"/>1208 <x:ref> Reason-Phrase</x:ref> = *( <x:ref>HTAB</x:ref> / <x:ref>SP</x:ref> / <x:ref>VCHAR</x:ref> / <x:ref>obs-text</x:ref> )1208 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="reason-phrase"/> 1209 <x:ref>reason-phrase</x:ref> = *( <x:ref>HTAB</x:ref> / <x:ref>SP</x:ref> / <x:ref>VCHAR</x:ref> / <x:ref>obs-text</x:ref> ) 1209 1210 </artwork></figure> 1210 1211 </section> … … 1893 1894 <t> 1894 1895 In the interest of robustness, servers &SHOULD; ignore at least one 1895 empty line received where a Request-Line is expected. In other words, if1896 empty line received where a request-line is expected. In other words, if 1896 1897 the server is reading the protocol stream at the beginning of a 1897 1898 message and receives a CRLF first, it &SHOULD; ignore the CRLF. … … 1968 1969 proxies &MUST; be able to recognize and exclude all of its own server 1969 1970 names, including any aliases, local variations, or literal IP addresses. 1970 An example Request-Line would be:1971 An example request-line would be: 1971 1972 </t> 1972 1973 <figure><artwork type="message/http; msgtype="request"" x:indent-with=" "> … … 2101 2102 </t> 2102 2103 <t> 2103 the request-target obtained from the Request-Line, unless the2104 the request-target obtained from the request-line, unless the 2104 2105 request-target is just the asterisk "*". 2105 2106 </t> … … 2210 2211 <iref item="Coding Format" subitem="chunked"/> 2211 2212 <x:anchor-alias value="chunk"/> 2212 <x:anchor-alias value=" Chunked-Body"/>2213 <x:anchor-alias value="chunked-body"/> 2213 2214 <x:anchor-alias value="chunk-data"/> 2214 2215 <x:anchor-alias value="chunk-ext"/> … … 2228 2229 received the full message. 2229 2230 </t> 2230 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem=" Chunked-Body"/><iref primary="true" item="Grammar" subitem="chunk"/><iref primary="true" item="Grammar" subitem="chunk-size"/><iref primary="true" item="Grammar" subitem="last-chunk"/><iref primary="true" item="Grammar" subitem="chunk-ext"/><iref primary="true" item="Grammar" subitem="chunk-ext-name"/><iref primary="true" item="Grammar" subitem="chunk-ext-val"/><iref primary="true" item="Grammar" subitem="chunk-data"/><iref primary="true" item="Grammar" subitem="trailer-part"/><iref primary="true" item="Grammar" subitem="quoted-str-nf"/><iref primary="true" item="Grammar" subitem="qdtext-nf"/>2231 <x:ref> Chunked-Body</x:ref> = *<x:ref>chunk</x:ref>2231 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="chunked-body"/><iref primary="true" item="Grammar" subitem="chunk"/><iref primary="true" item="Grammar" subitem="chunk-size"/><iref primary="true" item="Grammar" subitem="last-chunk"/><iref primary="true" item="Grammar" subitem="chunk-ext"/><iref primary="true" item="Grammar" subitem="chunk-ext-name"/><iref primary="true" item="Grammar" subitem="chunk-ext-val"/><iref primary="true" item="Grammar" subitem="chunk-data"/><iref primary="true" item="Grammar" subitem="trailer-part"/><iref primary="true" item="Grammar" subitem="quoted-str-nf"/><iref primary="true" item="Grammar" subitem="qdtext-nf"/> 2232 <x:ref>chunked-body</x:ref> = *<x:ref>chunk</x:ref> 2232 2233 <x:ref>last-chunk</x:ref> 2233 2234 <x:ref>trailer-part</x:ref> … … 3178 3179 for multiple host names on a single IP address. Since the Host 3179 3180 field-value is critical information for handling a request, it 3180 &SHOULD; be sent as the first header field following the Request-Line.3181 &SHOULD; be sent as the first header field following the request-line. 3181 3182 </t> 3182 3183 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="Host"/> … … 3571 3572 <list style="hanging"> 3572 3573 <t hangText="version:"> 3573 The HTTP- Version number of the enclosed message3574 The HTTP-version number of the enclosed message 3574 3575 (e.g., "1.1"). If not present, the version can be 3575 3576 determined from the first line of the body. … … 3640 3641 <list style="hanging"> 3641 3642 <t hangText="version:"> 3642 The HTTP- Version number of the enclosed messages3643 The HTTP-version number of the enclosed messages 3643 3644 (e.g., "1.1"). If not present, the version can be 3644 3645 determined from the first line of the body. … … 4967 4968 </t> 4968 4969 <t> 4969 Clarify that the string "HTTP" in the HTTP- Version ABFN production is case4970 Clarify that the string "HTTP" in the HTTP-version ABFN production is case 4970 4971 sensitive. Restrict the version numbers to be single digits due to the fact 4971 4972 that implementations are known to handle multi-digit version numbers … … 5039 5040 <x:ref>BWS</x:ref> = OWS 5040 5041 5041 <x:ref>Chunked-Body</x:ref> = *chunk last-chunk trailer-part CRLF5042 5042 <x:ref>Connection</x:ref> = *( "," OWS ) connection-token *( OWS "," [ OWS 5043 5043 connection-token ] ) 5044 5044 <x:ref>Content-Length</x:ref> = 1*DIGIT 5045 5045 5046 <x:ref>HTTP-Prot-Name</x:ref> = %x48.54.54.50 ; HTTP5047 <x:ref>HTTP-Version</x:ref> = HTTP-Prot-Name "/" DIGIT "." DIGIT5048 5046 <x:ref>HTTP-message</x:ref> = start-line *( header-field CRLF ) CRLF [ message-body 5049 5047 ] 5048 <x:ref>HTTP-name</x:ref> = %x48.54.54.50 ; HTTP 5049 <x:ref>HTTP-version</x:ref> = HTTP-name "/" DIGIT "." DIGIT 5050 5050 <x:ref>Host</x:ref> = uri-host [ ":" port ] 5051 5051 5052 <x:ref>Method</x:ref> = token5053 5054 5052 <x:ref>OWS</x:ref> = *( SP / HTAB ) 5055 5053 5056 5054 <x:ref>RWS</x:ref> = 1*( SP / HTAB ) 5057 <x:ref>Reason-Phrase</x:ref> = *( HTAB / SP / VCHAR / obs-text )5058 <x:ref>Request-Line</x:ref> = Method SP request-target SP HTTP-Version CRLF5059 5060 <x:ref>Status-Code</x:ref> = 3DIGIT5061 <x:ref>Status-Line</x:ref> = HTTP-Version SP Status-Code SP Reason-Phrase CRLF5062 5055 5063 5056 <x:ref>TE</x:ref> = [ ( "," / t-codings ) *( OWS "," [ OWS t-codings ] ) ] … … 5083 5076 <x:ref>chunk-ext-val</x:ref> = token / quoted-str-nf 5084 5077 <x:ref>chunk-size</x:ref> = 1*HEXDIG 5078 <x:ref>chunked-body</x:ref> = *chunk last-chunk trailer-part CRLF 5085 5079 <x:ref>comment</x:ref> = "(" *( ctext / quoted-cpair / comment ) ")" 5086 5080 <x:ref>connection-token</x:ref> = token … … 5101 5095 5102 5096 <x:ref>message-body</x:ref> = *OCTET 5097 <x:ref>method</x:ref> = token 5103 5098 5104 5099 <x:ref>obs-fold</x:ref> = CRLF ( SP / HTAB ) … … 5127 5122 <x:ref>qvalue</x:ref> = ( "0" [ "." *3DIGIT ] ) / ( "1" [ "." *3"0" ] ) 5128 5123 5124 <x:ref>reason-phrase</x:ref> = *( HTAB / SP / VCHAR / obs-text ) 5129 5125 <x:ref>received-by</x:ref> = ( uri-host [ ":" port ] ) / pseudonym 5130 5126 <x:ref>received-protocol</x:ref> = [ protocol-name "/" ] protocol-version 5131 5127 <x:ref>relative-part</x:ref> = <relative-part, defined in [RFC3986], Section 4.2> 5128 <x:ref>request-line</x:ref> = method SP request-target SP HTTP-version CRLF 5132 5129 <x:ref>request-target</x:ref> = "*" / absolute-URI / ( path-absolute [ "?" query ] ) 5133 5130 / authority … … 5135 5132 <x:ref>special</x:ref> = "(" / ")" / "<" / ">" / "@" / "," / ";" / ":" / "\" / 5136 5133 DQUOTE / "/" / "[" / "]" / "?" / "=" / "{" / "}" 5137 <x:ref>start-line</x:ref> = Request-Line / Status-Line 5134 <x:ref>start-line</x:ref> = request-line / status-line 5135 <x:ref>status-code</x:ref> = 3DIGIT 5136 <x:ref>status-line</x:ref> = HTTP-version SP status-code SP reason-phrase CRLF 5138 5137 5139 5138 <x:ref>t-codings</x:ref> = "trailers" / ( transfer-extension [ te-params ] ) … … 5157 5156 </figure> 5158 5157 <figure><preamble>ABNF diagnostics:</preamble><artwork type="inline"> 5159 ; Chunked-Body defined but not used5160 5158 ; Connection defined but not used 5161 5159 ; Content-Length defined but not used … … 5168 5166 ; Upgrade defined but not used 5169 5167 ; Via defined but not used 5168 ; chunked-body defined but not used 5170 5169 ; http-URI defined but not used 5171 5170 ; https-URI defined but not used … … 5376 5375 <list style="symbols"> 5377 5376 <t> 5378 Replace string literals when the string really is case-sensitive (HTTP- Version).5377 Replace string literals when the string really is case-sensitive (HTTP-version). 5379 5378 </t> 5380 5379 </list> … … 5493 5492 <t> 5494 5493 <eref target="http://tools.ietf.org/wg/httpbis/trac/ticket/94"/>: 5495 " Reason-Phrase BNF"5494 "reason-phrase BNF" 5496 5495 </t> 5497 5496 <t> … … 5824 5823 <t> 5825 5824 <eref target="http://tools.ietf.org/wg/httpbis/trac/ticket/273"/>: 5826 "HTTP- Version should be redefined as fixed length pair of DIGIT . DIGIT"5825 "HTTP-version should be redefined as fixed length pair of DIGIT . DIGIT" 5827 5826 </t> 5828 5827 <t>
Note: See TracChangeset
for help on using the changeset viewer.