source: draft-ietf-httpbis/latest/httpbis.abnf @ 1538

Last change on this file since 1538 was 1538, checked in by fielding@…, 8 years ago

Move definitions of Transfer-Encoding and Content-Length to where
they are first used. Move other transfer encoding stuff (codings,
TE, and Trailers) to its own section. Moved text is unchanged.
Make Upgrade use protocol tokens instead of product tokens (WTF?)
and move product tokens to p2. Reduce protocol registry requirements.
Removed now-empty section on protocol parameters.

  • Property svn:eol-style set to native
File size: 12.1 KB
Line 
1; the ABNF below was extracted from the IETF HTTPbis WG Internet Drafts
2; please see <http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging>
3; for copyright information.
4
5Accept = [ ( "," / ( media-range [ accept-params ] ) ) *( OWS "," [ OWS media-range [ accept-params ] ] ) ]
6Accept-Charset = *( "," OWS ) ( charset / "*" ) [ OWS ";" OWS "q=" qvalue ] *( OWS "," [ OWS ( charset / "*" ) [ OWS ";" OWS "q=" qvalue ] ] )
7Accept-Encoding = [ ( "," / ( codings [ OWS ";" OWS "q=" qvalue ] ) ) *( OWS "," [ OWS codings [ OWS ";" OWS "q=" qvalue ] ] ) ]
8Accept-Language = *( "," OWS ) language-range [ OWS ";" OWS "q=" qvalue ] *( OWS "," [ OWS language-range [ OWS ";" OWS "q=" qvalue ] ] )
9Accept-Ranges = acceptable-ranges
10Age = delta-seconds
11Allow = [ ( "," / Method ) *( OWS "," [ OWS Method ] ) ]
12Authorization = credentials
13BWS = OWS
14Cache-Control = *( "," OWS ) cache-directive *( OWS "," [ OWS cache-directive ] )
15Chunked-Body = *chunk last-chunk trailer-part CRLF
16Connection = *( "," OWS ) connection-token *( OWS "," [ OWS connection-token ] )
17Content-Encoding = *( "," OWS ) content-coding *( OWS "," [ OWS content-coding ] )
18Content-Language = *( "," OWS ) language-tag *( OWS "," [ OWS language-tag ] )
19Content-Length = 1*DIGIT
20Content-Location = absolute-URI / partial-URI
21Content-Range = byte-content-range-spec / other-content-range-spec
22Content-Type = media-type
23Date = HTTP-date
24ETag = entity-tag
25Expect = *( "," OWS ) expectation *( OWS "," [ OWS expectation ] )
26Expires = HTTP-date
27From = mailbox
28GMT = %x47.4D.54 ; GMT
29
30HTTP-Prot-Name = %x48.54.54.50 ; HTTP
31
32HTTP-Version = HTTP-Prot-Name "/" DIGIT "." DIGIT
33HTTP-date = rfc1123-date / obs-date
34HTTP-message = start-line *( header-field CRLF ) CRLF [ message-body ]
35Host = uri-host [ ":" port ]
36If-Match = "*" / ( *( "," OWS ) entity-tag *( OWS "," [ OWS entity-tag ] ) )
37If-Modified-Since = HTTP-date
38If-None-Match = "*" / ( *( "," OWS ) entity-tag *( OWS "," [ OWS entity-tag ] ) )
39If-Range = entity-tag / HTTP-date
40If-Unmodified-Since = HTTP-date
41Last-Modified = HTTP-date
42Location = URI-reference
43MIME-Version = 1*DIGIT "." 1*DIGIT
44Max-Forwards = 1*DIGIT
45Method = token
46OWS = *( SP / HTAB / obs-fold )
47Pragma = *( "," OWS ) pragma-directive *( OWS "," [ OWS pragma-directive ] )
48Proxy-Authenticate = *( "," OWS ) challenge *( OWS "," [ OWS challenge ] )
49Proxy-Authorization = credentials
50RWS = 1*( SP / HTAB / obs-fold )
51Range = byte-ranges-specifier / other-ranges-specifier
52Reason-Phrase = *( HTAB / SP / VCHAR / obs-text )
53Referer = absolute-URI / partial-URI
54Request-Line = Method SP request-target SP HTTP-Version CRLF
55Retry-After = HTTP-date / delta-seconds
56Server = product *( RWS ( product / comment ) )
57Status-Code = 3DIGIT
58Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF
59TE = [ ( "," / t-codings ) *( OWS "," [ OWS t-codings ] ) ]
60Trailer = *( "," OWS ) field-name *( OWS "," [ OWS field-name ] )
61Transfer-Encoding = *( "," OWS ) transfer-coding *( OWS "," [ OWS transfer-coding ] )
62URI-reference = <URI-reference, defined in [RFC3986], Section 4.1>
63Upgrade = *( "," OWS ) protocol *( OWS "," [ OWS protocol ] )
64User-Agent = product *( RWS ( product / comment ) )
65Vary = "*" / ( *( "," OWS ) field-name *( OWS "," [ OWS field-name ] ) )
66Via = *( "," OWS ) received-protocol RWS received-by [ RWS comment ] *( OWS "," [ OWS received-protocol RWS received-by [ RWS comment ] ] )
67WWW-Authenticate = *( "," OWS ) challenge *( OWS "," [ OWS challenge ] )
68Warning = *( "," OWS ) warning-value *( OWS "," [ OWS warning-value ] )
69absolute-URI = <absolute-URI, defined in [RFC3986], Section 4.3>
70accept-ext = OWS ";" OWS token [ "=" word ]
71accept-params = OWS ";" OWS "q=" qvalue *accept-ext
72acceptable-ranges = ( *( "," OWS ) range-unit *( OWS "," [ OWS range-unit ] ) ) / "none"
73asctime-date = day-name SP date3 SP time-of-day SP year
74attribute = token
75auth-param = token BWS "=" BWS ( token / quoted-string )
76auth-scheme = token
77authority = <authority, defined in [RFC3986], Section 3.2>
78b64token = 1*( ALPHA / DIGIT / "-" / "." / "_" / "~" / "+" / "/" ) *"="
79byte-content-range-spec = bytes-unit SP byte-range-resp-spec "/" ( instance-length / "*" )
80byte-range-resp-spec = ( first-byte-pos "-" last-byte-pos ) / "*"
81byte-range-set = ( *( "," OWS ) byte-range-spec ) / ( suffix-byte-range-spec *( OWS "," [ ( OWS byte-range-spec ) / suffix-byte-range-spec ] ) )
82byte-range-spec = first-byte-pos "-" [ last-byte-pos ]
83byte-ranges-specifier = bytes-unit "=" byte-range-set
84bytes-unit = "bytes"
85cache-directive = cache-request-directive / cache-response-directive
86cache-extension = token [ "=" ( token / quoted-string ) ]
87cache-request-directive = "no-cache" / "no-store" / ( "max-age=" delta-seconds ) / ( "max-stale" [ "=" delta-seconds ] ) / ( "min-fresh=" delta-seconds ) / "no-transform" / "only-if-cached" / cache-extension
88cache-response-directive = "public" / ( "private" [ "=" DQUOTE *( "," OWS ) field-name *( OWS "," [ OWS field-name ] ) DQUOTE ] ) / ( "no-cache" [ "=" DQUOTE *( "," OWS ) field-name *( OWS "," [ OWS field-name ] ) DQUOTE ] ) / "no-store" / "no-transform" / "must-revalidate" / "proxy-revalidate" / ( "max-age=" delta-seconds ) / ( "s-maxage=" delta-seconds ) / cache-extension
89challenge = auth-scheme [ 1*SP ( b64token / [ ( "," / auth-param ) *( OWS "," [ OWS auth-param ] ) ] ) ]
90charset = token
91chunk = chunk-size [ chunk-ext ] CRLF chunk-data CRLF
92chunk-data = 1*OCTET
93chunk-ext = *( ";" chunk-ext-name [ "=" chunk-ext-val ] )
94chunk-ext-name = token
95chunk-ext-val = token / quoted-str-nf
96chunk-size = 1*HEXDIG
97codings = content-coding / "identity" / "*"
98comment = "(" *( ctext / quoted-cpair / comment ) ")"
99connection-token = token
100content-coding = token
101credentials = auth-scheme [ 1*SP ( b64token / [ ( "," / auth-param ) *( OWS "," [ OWS auth-param ] ) ] ) ]
102ctext = OWS / %x21-27 ; '!'-'''
103 / %x2A-5B ; '*'-'['
104 / %x5D-7E ; ']'-'~'
105 / obs-text
106date1 = day SP month SP year
107date2 = day "-" month "-" 2DIGIT
108date3 = month SP ( 2DIGIT / ( SP DIGIT ) )
109day = 2DIGIT
110day-name = %x4D.6F.6E ; Mon
111 / %x54.75.65 ; Tue
112 / %x57.65.64 ; Wed
113 / %x54.68.75 ; Thu
114 / %x46.72.69 ; Fri
115 / %x53.61.74 ; Sat
116 / %x53.75.6E ; Sun
117
118day-name-l = %x4D.6F.6E.64.61.79 ; Monday
119 / %x54.75.65.73.64.61.79 ; Tuesday
120 / %x57.65.64.6E.65.73.64.61.79 ; Wednesday
121 / %x54.68.75.72.73.64.61.79 ; Thursday
122 / %x46.72.69.64.61.79 ; Friday
123 / %x53.61.74.75.72.64.61.79 ; Saturday
124 / %x53.75.6E.64.61.79 ; Sunday
125
126delta-seconds = 1*DIGIT
127entity-tag = [ weak ] opaque-tag
128etagc = "!" / %x23-7E ; '#'-'~'
129 / obs-text
130expect-name = token
131expect-param = expect-name [ BWS "=" BWS expect-value ]
132expect-value = token / quoted-string
133expectation = expect-name [ BWS "=" BWS expect-value ] *( OWS ";" [ OWS expect-param ] )
134extension-pragma = token [ "=" ( token / quoted-string ) ]
135field-content = *( HTAB / SP / VCHAR / obs-text )
136field-name = token
137field-value = *( field-content / obs-fold )
138first-byte-pos = 1*DIGIT
139header-field = field-name ":" OWS field-value BWS
140hour = 2DIGIT
141http-URI = "http://" authority path-abempty [ "?" query ]
142https-URI = "https://" authority path-abempty [ "?" query ]
143instance-length = 1*DIGIT
144language-range = <language-range, defined in [RFC4647], Section 2.1>
145language-tag = <Language-Tag, defined in [RFC5646], Section 2.1>
146last-byte-pos = 1*DIGIT
147last-chunk = 1*"0" [ chunk-ext ] CRLF
148mailbox = <mailbox, defined in [RFC5322], Section 3.4>
149media-range = ( "*/*" / ( type "/*" ) / ( type "/" subtype ) ) *( OWS ";" OWS parameter )
150media-type = type "/" subtype *( OWS ";" OWS parameter )
151message-body = *OCTET
152minute = 2DIGIT
153month = %x4A.61.6E ; Jan
154 / %x46.65.62 ; Feb
155 / %x4D.61.72 ; Mar
156 / %x41.70.72 ; Apr
157 / %x4D.61.79 ; May
158 / %x4A.75.6E ; Jun
159 / %x4A.75.6C ; Jul
160 / %x41.75.67 ; Aug
161 / %x53.65.70 ; Sep
162 / %x4F.63.74 ; Oct
163 / %x4E.6F.76 ; Nov
164 / %x44.65.63 ; Dec
165
166obs-date = rfc850-date / asctime-date
167obs-fold = CRLF ( SP / HTAB )
168obs-text = %x80-FF
169opaque-tag = DQUOTE *etagc DQUOTE
170other-content-range-spec = other-range-unit SP other-range-resp-spec
171other-range-resp-spec = *CHAR
172other-range-set = 1*CHAR
173other-range-unit = token
174other-ranges-specifier = other-range-unit "=" other-range-set
175parameter = attribute "=" value
176partial-URI = relative-part [ "?" query ]
177path-abempty = <path-abempty, defined in [RFC3986], Section 3.3>
178path-absolute = <path-absolute, defined in [RFC3986], Section 3.3>
179port = <port, defined in [RFC3986], Section 3.2.3>
180pragma-directive = "no-cache" / extension-pragma
181product = token [ "/" product-version ]
182product-version = token
183protocol = protocol-name [ "/" protocol-version ]
184protocol-name = token
185protocol-version = token
186pseudonym = token
187qdtext = OWS / "!" / %x23-5B ; '#'-'['
188 / %x5D-7E ; ']'-'~'
189 / obs-text
190qdtext-nf = HTAB / SP / "!" / %x23-5B ; '#'-'['
191 / %x5D-7E ; ']'-'~'
192 / obs-text
193query = <query, defined in [RFC3986], Section 3.4>
194quoted-cpair = "\" ( HTAB / SP / VCHAR / obs-text )
195quoted-pair = "\" ( HTAB / SP / VCHAR / obs-text )
196quoted-str-nf = DQUOTE *( qdtext-nf / quoted-pair ) DQUOTE
197quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE
198qvalue = ( "0" [ "." *3DIGIT ] ) / ( "1" [ "." *3"0" ] )
199range-unit = bytes-unit / other-range-unit
200received-by = ( uri-host [ ":" port ] ) / pseudonym
201received-protocol = [ protocol-name "/" ] protocol-version
202relative-part = <relative-part, defined in [RFC3986], Section 4.2>
203request-target = "*" / absolute-URI / ( path-absolute [ "?" query ] ) / authority
204rfc1123-date = day-name "," SP date1 SP time-of-day SP GMT
205rfc850-date = day-name-l "," SP date2 SP time-of-day SP GMT
206second = 2DIGIT
207special = "(" / ")" / "<" / ">" / "@" / "," / ";" / ":" / "\" / DQUOTE / "/" / "[" / "]" / "?" / "=" / "{" / "}"
208start-line = Request-Line / Status-Line
209subtype = token
210suffix-byte-range-spec = "-" suffix-length
211suffix-length = 1*DIGIT
212t-codings = "trailers" / ( transfer-extension [ te-params ] )
213tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~" / DIGIT / ALPHA
214te-ext = OWS ";" OWS token [ "=" word ]
215te-params = OWS ";" OWS "q=" qvalue *te-ext
216time-of-day = hour ":" minute ":" second
217token = 1*tchar
218trailer-part = *( header-field CRLF )
219transfer-coding = "chunked" / "compress" / "deflate" / "gzip" / transfer-extension
220transfer-extension = token *( OWS ";" OWS transfer-parameter )
221transfer-parameter = attribute BWS "=" BWS value
222type = token
223uri-host = <host, defined in [RFC3986], Section 3.2.2>
224value = word
225warn-agent = ( uri-host [ ":" port ] ) / pseudonym
226warn-code = 3DIGIT
227warn-date = DQUOTE HTTP-date DQUOTE
228warn-text = quoted-string
229warning-value = warn-code SP warn-agent SP warn-text [ SP warn-date ]
230weak = %x57.2F ; W/
231
232word = token / quoted-string
233year = 4DIGIT
234; Accept defined but not used
235; Accept-Charset defined but not used
236; Accept-Encoding defined but not used
237; Accept-Language defined but not used
238; Accept-Ranges defined but not used
239; Age defined but not used
240; Allow defined but not used
241; Authorization defined but not used
242; Cache-Control defined but not used
243; Chunked-Body defined but not used
244; Connection defined but not used
245; Content-Encoding defined but not used
246; Content-Language defined but not used
247; Content-Length defined but not used
248; Content-Location defined but not used
249; Content-Range defined but not used
250; Content-Type defined but not used
251; Date defined but not used
252; ETag defined but not used
253; Expect defined but not used
254; Expires defined but not used
255; From defined but not used
256; HTTP-message defined but not used
257; Host defined but not used
258; If-Match defined but not used
259; If-Modified-Since defined but not used
260; If-None-Match defined but not used
261; If-Range defined but not used
262; If-Unmodified-Since defined but not used
263; Last-Modified defined but not used
264; Location defined but not used
265; MIME-Version defined but not used
266; Max-Forwards defined but not used
267; Pragma defined but not used
268; Proxy-Authenticate defined but not used
269; Proxy-Authorization defined but not used
270; Range defined but not used
271; Referer defined but not used
272; Retry-After defined but not used
273; Server defined but not used
274; TE defined but not used
275; Trailer defined but not used
276; Transfer-Encoding defined but not used
277; Upgrade defined but not used
278; User-Agent defined but not used
279; Vary defined but not used
280; Via defined but not used
281; WWW-Authenticate defined but not used
282; Warning defined but not used
283; http-URI defined but not used
284; https-URI defined but not used
285; special defined but not used
Note: See TracBrowser for help on using the repository browser.