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

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

Requirements are not allowed in appendices. They have been changed to prose.
Changes from RFC2616 have been rewritten for consistency and to remove changes
that are only editorial. Addresses #419

  • Property svn:eol-style set to native
File size: 11.5 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 / "*" ) [ weight ] ) *( OWS "," [ OWS ( ( charset / "*" ) [ weight ] ) ] )
7Accept-Encoding = [ ( "," / ( codings [ weight ] ) ) *( OWS "," [ OWS ( codings [ weight ] ) ] ) ]
8Accept-Language = *( "," OWS ) ( language-range [ weight ] ) *( OWS "," [ OWS ( language-range [ weight ] ) ] )
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 ] )
15Connection = *( "," OWS ) connection-option *( OWS "," [ OWS connection-option ] )
16Content-Encoding = *( "," OWS ) content-coding *( OWS "," [ OWS content-coding ] )
17Content-Language = *( "," OWS ) language-tag *( OWS "," [ OWS language-tag ] )
18Content-Length = 1*DIGIT
19Content-Location = absolute-URI / partial-URI
20Content-Range = byte-content-range-spec / other-content-range-spec
21Content-Type = media-type
22Date = HTTP-date
23ETag = entity-tag
24Expect = *( "," OWS ) expectation *( OWS "," [ OWS expectation ] )
25Expires = HTTP-date
26From = mailbox
27GMT = %x47.4D.54 ; GMT
28
29HTTP-date = IMF-fixdate / obs-date
30HTTP-message = start-line *( header-field CRLF ) CRLF [ message-body ]
31HTTP-name = %x48.54.54.50 ; HTTP
32
33HTTP-version = HTTP-name "/" DIGIT "." DIGIT
34Host = uri-host [ ":" port ]
35IMF-fixdate = day-name "," SP date1 SP time-of-day SP GMT
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
43Max-Forwards = 1*DIGIT
44OWS = *( SP / HTAB )
45Pragma = *( "," OWS ) pragma-directive *( OWS "," [ OWS pragma-directive ] )
46Proxy-Authenticate = *( "," OWS ) challenge *( OWS "," [ OWS challenge ] )
47Proxy-Authorization = credentials
48RWS = 1*( SP / HTAB )
49Range = byte-ranges-specifier / other-ranges-specifier
50Referer = absolute-URI / partial-URI
51Retry-After = HTTP-date / delta-seconds
52Server = product *( RWS ( product / comment ) )
53TE = [ ( "," / t-codings ) *( OWS "," [ OWS t-codings ] ) ]
54Trailer = *( "," OWS ) field-name *( OWS "," [ OWS field-name ] )
55Transfer-Encoding = *( "," OWS ) transfer-coding *( OWS "," [ OWS transfer-coding ] )
56URI-reference = <URI-reference, defined in [RFC3986], Section 4.1>
57Upgrade = *( "," OWS ) protocol *( OWS "," [ OWS protocol ] )
58User-Agent = product *( RWS ( product / comment ) )
59Vary = "*" / ( *( "," OWS ) field-name *( OWS "," [ OWS field-name ] ) )
60Via = *( "," OWS ) ( received-protocol RWS received-by [ RWS comment ] ) *( OWS "," [ OWS ( received-protocol RWS received-by [ RWS comment ] ) ] )
61WWW-Authenticate = *( "," OWS ) challenge *( OWS "," [ OWS challenge ] )
62Warning = *( "," OWS ) warning-value *( OWS "," [ OWS warning-value ] )
63absolute-URI = <absolute-URI, defined in [RFC3986], Section 4.3>
64absolute-form = absolute-URI
65accept-ext = OWS ";" OWS token [ "=" word ]
66accept-params = weight *accept-ext
67acceptable-ranges = ( *( "," OWS ) range-unit *( OWS "," [ OWS range-unit ] ) ) / "none"
68asctime-date = day-name SP date3 SP time-of-day SP year
69asterisk-form = "*"
70attribute = token
71auth-param = token BWS "=" BWS ( token / quoted-string )
72auth-scheme = token
73authority = <authority, defined in [RFC3986], Section 3.2>
74authority-form = authority
75byte-content-range-spec = bytes-unit SP byte-range-resp-spec "/" ( instance-length / "*" )
76byte-range-resp-spec = ( first-byte-pos "-" last-byte-pos ) / "*"
77byte-range-set = *( "," OWS ) ( byte-range-spec / suffix-byte-range-spec ) *( OWS "," [ OWS ( byte-range-spec / suffix-byte-range-spec ) ] )
78byte-range-spec = first-byte-pos "-" [ last-byte-pos ]
79byte-ranges-specifier = bytes-unit "=" byte-range-set
80bytes-unit = "bytes"
81cache-directive = token [ "=" ( token / quoted-string ) ]
82challenge = auth-scheme [ 1*SP ( token68 / [ ( "," / auth-param ) *( OWS "," [ OWS auth-param ] ) ] ) ]
83charset = token
84chunk = chunk-size [ chunk-ext ] CRLF chunk-data CRLF
85chunk-data = 1*OCTET
86chunk-ext = *( ";" chunk-ext-name [ "=" chunk-ext-val ] )
87chunk-ext-name = token
88chunk-ext-val = token / quoted-str-nf
89chunk-size = 1*HEXDIG
90chunked-body = *chunk last-chunk trailer-part CRLF
91codings = content-coding / "identity" / "*"
92comment = "(" *( ctext / quoted-cpair / comment ) ")"
93connection-option = token
94content-coding = token
95credentials = auth-scheme [ 1*SP ( token68 / [ ( "," / auth-param ) *( OWS "," [ OWS auth-param ] ) ] ) ]
96ctext = HTAB / SP / %x21-27 ; '!'-'''
97 / %x2A-5B ; '*'-'['
98 / %x5D-7E ; ']'-'~'
99 / obs-text
100date1 = day SP month SP year
101date2 = day "-" month "-" 2DIGIT
102date3 = month SP ( 2DIGIT / ( SP DIGIT ) )
103day = 2DIGIT
104day-name = %x4D.6F.6E ; Mon
105 / %x54.75.65 ; Tue
106 / %x57.65.64 ; Wed
107 / %x54.68.75 ; Thu
108 / %x46.72.69 ; Fri
109 / %x53.61.74 ; Sat
110 / %x53.75.6E ; Sun
111
112day-name-l = %x4D.6F.6E.64.61.79 ; Monday
113 / %x54.75.65.73.64.61.79 ; Tuesday
114 / %x57.65.64.6E.65.73.64.61.79 ; Wednesday
115 / %x54.68.75.72.73.64.61.79 ; Thursday
116 / %x46.72.69.64.61.79 ; Friday
117 / %x53.61.74.75.72.64.61.79 ; Saturday
118 / %x53.75.6E.64.61.79 ; Sunday
119
120delta-seconds = 1*DIGIT
121entity-tag = [ weak ] opaque-tag
122etagc = "!" / %x23-7E ; '#'-'~'
123 / obs-text
124expect-name = token
125expect-param = expect-name [ BWS "=" BWS expect-value ]
126expect-value = token / quoted-string
127expectation = expect-name [ BWS "=" BWS expect-value ] *( OWS ";" [ OWS expect-param ] )
128extension-pragma = token [ "=" ( token / quoted-string ) ]
129field-content = *( HTAB / SP / VCHAR / obs-text )
130field-name = token
131field-value = *( field-content / obs-fold )
132first-byte-pos = 1*DIGIT
133header-field = field-name ":" OWS field-value BWS
134hour = 2DIGIT
135http-URI = "http://" authority path-abempty [ "?" query ]
136https-URI = "https://" authority path-abempty [ "?" query ]
137instance-length = 1*DIGIT
138language-range = <language-range, defined in [RFC4647], Section 2.1>
139language-tag = <Language-Tag, defined in [RFC5646], Section 2.1>
140last-byte-pos = 1*DIGIT
141last-chunk = 1*"0" [ chunk-ext ] CRLF
142mailbox = <mailbox, defined in [RFC5322], Section 3.4>
143media-range = ( "*/*" / ( type "/*" ) / ( type "/" subtype ) ) *( OWS ";" OWS parameter )
144media-type = type "/" subtype *( OWS ";" OWS parameter )
145message-body = *OCTET
146method = token
147minute = 2DIGIT
148month = %x4A.61.6E ; Jan
149 / %x46.65.62 ; Feb
150 / %x4D.61.72 ; Mar
151 / %x41.70.72 ; Apr
152 / %x4D.61.79 ; May
153 / %x4A.75.6E ; Jun
154 / %x4A.75.6C ; Jul
155 / %x41.75.67 ; Aug
156 / %x53.65.70 ; Sep
157 / %x4F.63.74 ; Oct
158 / %x4E.6F.76 ; Nov
159 / %x44.65.63 ; Dec
160
161obs-date = rfc850-date / asctime-date
162obs-fold = CRLF ( SP / HTAB )
163obs-text = %x80-FF
164opaque-tag = DQUOTE *etagc DQUOTE
165origin-form = path-absolute [ "?" query ]
166other-content-range-spec = other-range-unit SP other-range-resp-spec
167other-range-resp-spec = *CHAR
168other-range-set = 1*CHAR
169other-range-unit = token
170other-ranges-specifier = other-range-unit "=" other-range-set
171parameter = attribute "=" value
172partial-URI = relative-part [ "?" query ]
173path-abempty = <path-abempty, defined in [RFC3986], Section 3.3>
174path-absolute = <path-absolute, defined in [RFC3986], Section 3.3>
175port = <port, defined in [RFC3986], Section 3.2.3>
176pragma-directive = "no-cache" / extension-pragma
177product = token [ "/" product-version ]
178product-version = token
179protocol = protocol-name [ "/" protocol-version ]
180protocol-name = token
181protocol-version = token
182pseudonym = token
183qdtext = HTAB / SP / "!" / %x23-5B ; '#'-'['
184 / %x5D-7E ; ']'-'~'
185 / obs-text
186qdtext-nf = HTAB / SP / "!" / %x23-5B ; '#'-'['
187 / %x5D-7E ; ']'-'~'
188 / obs-text
189query = <query, defined in [RFC3986], Section 3.4>
190quoted-cpair = "\" ( HTAB / SP / VCHAR / obs-text )
191quoted-pair = "\" ( HTAB / SP / VCHAR / obs-text )
192quoted-str-nf = DQUOTE *( qdtext-nf / quoted-pair ) DQUOTE
193quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE
194qvalue = ( "0" [ "." *3DIGIT ] ) / ( "1" [ "." *3"0" ] )
195range-unit = bytes-unit / other-range-unit
196rank = ( "0" [ "." *3DIGIT ] ) / ( "1" [ "." *3"0" ] )
197reason-phrase = *( HTAB / SP / VCHAR / obs-text )
198received-by = ( uri-host [ ":" port ] ) / pseudonym
199received-protocol = [ protocol-name "/" ] protocol-version
200relative-part = <relative-part, defined in [RFC3986], Section 4.2>
201request-line = method SP request-target SP HTTP-version CRLF
202request-target = origin-form / absolute-form / authority-form / asterisk-form
203rfc850-date = day-name-l "," SP date2 SP time-of-day SP GMT
204second = 2DIGIT
205special = "(" / ")" / "<" / ">" / "@" / "," / ";" / ":" / "\" / DQUOTE / "/" / "[" / "]" / "?" / "=" / "{" / "}"
206start-line = request-line / status-line
207status-code = 3DIGIT
208status-line = HTTP-version SP status-code SP reason-phrase CRLF
209subtype = token
210suffix-byte-range-spec = "-" suffix-length
211suffix-length = 1*DIGIT
212t-codings = "trailers" / ( transfer-coding [ t-ranking ] )
213t-ranking = OWS ";" OWS "q=" rank
214tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~" / DIGIT / ALPHA
215time-of-day = hour ":" minute ":" second
216token = 1*tchar
217token68 = 1*( ALPHA / DIGIT / "-" / "." / "_" / "~" / "+" / "/" ) *"="
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
232weight = OWS ";" OWS "q=" qvalue
233word = token / quoted-string
234year = 4DIGIT
235; Accept defined but not used
236; Accept-Charset defined but not used
237; Accept-Encoding defined but not used
238; Accept-Language defined but not used
239; Accept-Ranges defined but not used
240; Age defined but not used
241; Allow defined but not used
242; Authorization defined but not used
243; Cache-Control 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; Max-Forwards defined but not used
266; Pragma defined but not used
267; Proxy-Authenticate defined but not used
268; Proxy-Authorization defined but not used
269; Range defined but not used
270; Referer defined but not used
271; Retry-After defined but not used
272; Server defined but not used
273; TE defined but not used
274; Trailer defined but not used
275; Transfer-Encoding defined but not used
276; Upgrade defined but not used
277; User-Agent defined but not used
278; Vary defined but not used
279; Via defined but not used
280; WWW-Authenticate defined but not used
281; Warning defined but not used
282; chunked-body 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.