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

Last change on this file since 2520 was 2520, checked in by julian.reschke@…, 7 years ago

re-add 'special' ABNF production that was removed in [2519]; it's there to make clear what characters are indeed special wrt to tchar (see #541)

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