2.2基本规则
下面这些规则描述了基本的解析符号,贯穿于整篇规范中。US-ASCII字符集在ANSI X3.4-1986[21]中被定义。
OCTET = <any 8-bit sequence of data>
CHAR = <any US-ASCII character (octets 0 - 127)>
UPALPHA = <any US-ASCII uppercase letter "A".."Z">
LOALPHA = <any US-ASCII lowercase letter "a".."z">
ALPHA = UPALPHA | LOALPHA
DIGIT = <any US-ASCII digit "0".."9">
CTL = <any US-ASCII control character
(octets 0 - 31) and DEL (127)>
CR = <US-ASCII CR, carriage return (13)>
LF = <US-ASCII LF, linefeed (10)>
SP = <US-ASCII SP, space (32)>
HT = <US-ASCII HT, horizontal-tab (9)>
<"> = <US-ASCII double-quote mark (34)>
HTTP/1。1 定义了回车换行作为所有协议元素行结束标志,entity-body除外。在entity-body的行结束标志和它相关联的数据类型紧密联系,des3.7。
CRLF = CR LF
HTTP/1。1头区的值可以多行,但需要接续行以一个空格或水平TAB开头。所有的LWS,可以转弯,都和SP有相同的语义。一个*可以在解释域值和转向message downstream时代替任何的LWS用一个单独的SP。
LWS =[CRLF]1*(SP|HT)
TEXT只被用来描述那些不会被message 解析器解析的域内容域值。只要按RFC2047[14]编码时,*TEXT可以包含除ISO-8859-1[22]在外的所有字符。
TEXT = <any OCTET except CTLs,but including LWS>
一个CRLF在TEXT定义中只作为头区的继续的一部分。多行的LWS会在其所在TEXT被解释前被一个单独的SP取代。
十六进制数字字符在几个协议元素中被使用。
HEX = "A" | "B" | "C" | "D" | "E" | "F"
| "a" | "b" | "c" | "d" | "e" | "f" | DIGIT
许多HTTP/1。1头区值由LWS或一些特殊字符分隔的字符组成。而在参数值(des3.6)中这些特殊的字符必须在一对引号中被使用。
token = 1*<any CHAR except CTLs or separators>
separators = "(" | ")" | "<" | ">" | "@"
| "," | ";" | ":" | "\" | <">
| "/" | "[" | "]" | "?" | "="
| "{" | "}" | SP | HT
注释可以包含在一些HTTP头区内,但是要在()内。而且只能在注释区内。在其他区,会被认为是区值的一部分。
comment = "(" *( ctext | quoted-pair | comment ) ")"
ctext = <any TEXT excluding "(" and ")">
一个text字符串如果被双引号包着,那会被认为是一个单独的词。
quoted-string = ( <"> *(qdtext | quoted-pair ) <"> )
qdtext = <any TEXT except <">>
斜划线可以被作为单字符的转换机制,但是必须要在引号内包着,并且是在注释区。
quoted-pair = "\" CHAR