; the ABNF below was extracted from the IETF HTTPbis WG Internet Drafts ; please see ; for copyright information. Accept = "Accept:" OWS Accept-v Accept-Charset = "Accept-Charset:" OWS Accept-Charset-v Accept-Charset-v = *( "," OWS ) ( charset / "*" ) [ OWS ";" OWS "q=" qvalue ] *( OWS "," [ OWS ( charset / "*" ) [ OWS ";" OWS "q=" qvalue ] ] ) Accept-Encoding = "Accept-Encoding:" OWS Accept-Encoding-v Accept-Encoding-v = [ ( "," / ( codings [ OWS ";" OWS "q=" qvalue ] ) ) *( OWS "," [ OWS codings [ OWS ";" OWS "q=" qvalue ] ] ) ] Accept-Language = "Accept-Language:" OWS Accept-Language-v Accept-Language-v = *( "," OWS ) language-range [ OWS ";" OWS "q=" qvalue ] *( OWS "," [ OWS language-range [ OWS ";" OWS "q=" qvalue ] ] ) Accept-Ranges = "Accept-Ranges:" OWS Accept-Ranges-v Accept-Ranges-v = acceptable-ranges Accept-v = [ ( "," / ( media-range [ accept-params ] ) ) *( OWS "," [ OWS media-range [ accept-params ] ] ) ] Age = "Age:" OWS Age-v Age-v = delta-seconds Allow = "Allow:" OWS Allow-v Allow-v = [ ( "," / Method ) *( OWS "," [ OWS Method ] ) ] Authorization = "Authorization:" OWS Authorization-v Authorization-v = credentials BWS = OWS Cache-Control = "Cache-Control:" OWS Cache-Control-v Cache-Control-v = *( "," OWS ) cache-directive *( OWS "," [ OWS cache-directive ] ) Chunked-Body = *chunk last-chunk trailer-part CRLF Connection = "Connection:" OWS Connection-v Connection-v = *( "," OWS ) connection-token *( OWS "," [ OWS connection-token ] ) Content-Encoding = "Content-Encoding:" OWS Content-Encoding-v Content-Encoding-v = *( "," OWS ) content-coding *( OWS "," [ OWS content-coding ] ) Content-Language = "Content-Language:" OWS Content-Language-v Content-Language-v = *( "," OWS ) language-tag *( OWS "," [ OWS language-tag ] ) Content-Length = "Content-Length:" OWS 1*Content-Length-v Content-Length-v = 1*DIGIT Content-Location = "Content-Location:" OWS Content-Location-v Content-Location-v = absolute-URI / partial-URI Content-MD5 = "Content-MD5:" OWS Content-MD5-v Content-MD5-v = Content-Range = "Content-Range:" OWS Content-Range-v Content-Range-v = content-range-spec Content-Type = "Content-Type:" OWS Content-Type-v Content-Type-v = media-type Date = "Date:" OWS Date-v Date-v = HTTP-date ETag = "ETag:" OWS ETag-v ETag-v = entity-tag Expect = "Expect:" OWS Expect-v Expect-v = *( "," OWS ) expectation *( OWS "," [ OWS expectation ] ) Expires = "Expires:" OWS Expires-v Expires-v = HTTP-date From = "From:" OWS From-v From-v = mailbox GMT = %x47.4D.54 ; GMT HTTP-Prot-Name = %x48.54.54.50 ; HTTP HTTP-Version = HTTP-Prot-Name "/" 1*DIGIT "." 1*DIGIT HTTP-date = rfc1123-date / obs-date HTTP-message = start-line *( header-field CRLF ) CRLF [ message-body ] Host = "Host:" OWS Host-v Host-v = uri-host [ ":" port ] If-Match = "If-Match:" OWS If-Match-v If-Match-v = "*" / ( *( "," OWS ) entity-tag *( OWS "," [ OWS entity-tag ] ) ) If-Modified-Since = "If-Modified-Since:" OWS If-Modified-Since-v If-Modified-Since-v = HTTP-date If-None-Match = "If-None-Match:" OWS If-None-Match-v If-None-Match-v = "*" / ( *( "," OWS ) entity-tag *( OWS "," [ OWS entity-tag ] ) ) If-Range = "If-Range:" OWS If-Range-v If-Range-v = entity-tag / HTTP-date If-Unmodified-Since = "If-Unmodified-Since:" OWS If-Unmodified-Since-v If-Unmodified-Since-v = HTTP-date Last-Modified = "Last-Modified:" OWS Last-Modified-v Last-Modified-v = HTTP-date Location = "Location:" OWS Location-v Location-v = URI-reference MIME-Version = "MIME-Version:" OWS MIME-Version-v MIME-Version-v = 1*DIGIT "." 1*DIGIT Max-Forwards = "Max-Forwards:" OWS Max-Forwards-v Max-Forwards-v = 1*DIGIT Method = token OWS = *( [ obs-fold ] WSP ) Pragma = "Pragma:" OWS Pragma-v Pragma-v = *( "," OWS ) pragma-directive *( OWS "," [ OWS pragma-directive ] ) Proxy-Authenticate = "Proxy-Authenticate:" OWS Proxy-Authenticate-v Proxy-Authenticate-v = *( "," OWS ) challenge *( OWS "," [ OWS challenge ] ) Proxy-Authorization = "Proxy-Authorization:" OWS Proxy-Authorization-v Proxy-Authorization-v = credentials RWS = 1*( [ obs-fold ] WSP ) Range = "Range:" OWS Range-v Range-v = byte-ranges-specifier / other-ranges-specifier Reason-Phrase = *( WSP / VCHAR / obs-text ) Referer = "Referer:" OWS Referer-v Referer-v = absolute-URI / partial-URI Request = Request-Line *( header-field CRLF ) CRLF [ message-body ] Request-Line = Method SP request-target SP HTTP-Version CRLF Response = Status-Line *( header-field CRLF ) CRLF [ message-body ] Retry-After = "Retry-After:" OWS Retry-After-v Retry-After-v = HTTP-date / delta-seconds Server = "Server:" OWS Server-v Server-v = product *( RWS ( product / comment ) ) Status-Code = 3DIGIT Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF TE = "TE:" OWS TE-v TE-v = [ ( "," / t-codings ) *( OWS "," [ OWS t-codings ] ) ] Trailer = "Trailer:" OWS Trailer-v Trailer-v = *( "," OWS ) field-name *( OWS "," [ OWS field-name ] ) Transfer-Encoding = "Transfer-Encoding:" OWS Transfer-Encoding-v Transfer-Encoding-v = *( "," OWS ) transfer-coding *( OWS "," [ OWS transfer-coding ] ) URI-reference = Upgrade = "Upgrade:" OWS Upgrade-v Upgrade-v = *( "," OWS ) product *( OWS "," [ OWS product ] ) User-Agent = "User-Agent:" OWS User-Agent-v User-Agent-v = product *( RWS ( product / comment ) ) Vary = "Vary:" OWS Vary-v Vary-v = "*" / ( *( "," OWS ) field-name *( OWS "," [ OWS field-name ] ) ) Via = "Via:" OWS Via-v Via-v = *( "," OWS ) received-protocol RWS received-by [ RWS comment ] *( OWS "," [ OWS received-protocol RWS received-by [ RWS comment ] ] ) WWW-Authenticate = "WWW-Authenticate:" OWS WWW-Authenticate-v WWW-Authenticate-v = *( "," OWS ) challenge *( OWS "," [ OWS challenge ] ) Warning = "Warning:" OWS Warning-v Warning-v = *( "," OWS ) warning-value *( OWS "," [ OWS warning-value ] ) absolute-URI = accept-ext = OWS ";" OWS token [ "=" word ] accept-params = OWS ";" OWS "q=" qvalue *accept-ext acceptable-ranges = ( *( "," OWS ) range-unit *( OWS "," [ OWS range-unit ] ) ) / "none" asctime-date = day-name SP date3 SP time-of-day SP year attribute = token auth-param = token "=" ( token / quoted-string ) auth-scheme = token authority = byte-content-range-spec = bytes-unit SP byte-range-resp-spec "/" ( instance-length / "*" ) byte-range-resp-spec = ( first-byte-pos "-" last-byte-pos ) / "*" byte-range-set = ( *( "," OWS ) byte-range-spec ) / ( suffix-byte-range-spec *( OWS "," [ ( OWS byte-range-spec ) / suffix-byte-range-spec ] ) ) byte-range-spec = first-byte-pos "-" [ last-byte-pos ] byte-ranges-specifier = bytes-unit "=" byte-range-set bytes-unit = "bytes" cache-directive = cache-request-directive / cache-response-directive cache-extension = token [ "=" ( token / quoted-string ) ] cache-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 cache-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 challenge = auth-scheme 1*SP *( "," OWS ) auth-param *( OWS "," [ OWS auth-param ] ) charset = token chunk = chunk-size *WSP [ chunk-ext ] CRLF chunk-data CRLF chunk-data = 1*OCTET chunk-ext = *( ";" *WSP chunk-ext-name [ "=" chunk-ext-val ] *WSP ) chunk-ext-name = token chunk-ext-val = token / quoted-str-nf chunk-size = 1*HEXDIG codings = ( content-coding / "*" ) comment = "(" *( ctext / quoted-cpair / comment ) ")" connection-token = token content-coding = token content-range-spec = byte-content-range-spec / other-content-range-spec credentials = auth-scheme ( token / quoted-string / [ ( "," / auth-param ) *( OWS "," [ OWS auth-param ] ) ] ) ctext = OWS / %x21-27 ; '!'-''' / %x2A-5B ; '*'-'[' / %x5D-7E ; ']'-'~' / obs-text date1 = day SP month SP year date2 = day "-" month "-" 2DIGIT date3 = month SP ( 2DIGIT / ( SP DIGIT ) ) day = 2DIGIT day-name = %x4D.6F.6E ; Mon / %x54.75.65 ; Tue / %x57.65.64 ; Wed / %x54.68.75 ; Thu / %x46.72.69 ; Fri / %x53.61.74 ; Sat / %x53.75.6E ; Sun day-name-l = %x4D.6F.6E.64.61.79 ; Monday / %x54.75.65.73.64.61.79 ; Tuesday / %x57.65.64.6E.65.73.64.61.79 ; Wednesday / %x54.68.75.72.73.64.61.79 ; Thursday / %x46.72.69.64.61.79 ; Friday / %x53.61.74.75.72.64.61.79 ; Saturday / %x53.75.6E.64.61.79 ; Sunday delta-seconds = 1*DIGIT entity-tag = [ weak ] opaque-tag expect-params = ";" token [ "=" ( token / quoted-string ) ] expectation = "100-continue" / expectation-extension expectation-extension = token [ "=" ( token / quoted-string ) *expect-params ] extension-pragma = token [ "=" ( token / quoted-string ) ] field-content = *( WSP / VCHAR / obs-text ) field-name = token field-value = *( field-content / OWS ) first-byte-pos = 1*DIGIT header-field = field-name ":" OWS [ field-value ] OWS hour = 2DIGIT http-URI = "http://" authority path-abempty [ "?" query ] https-URI = "https://" authority path-abempty [ "?" query ] instance-length = 1*DIGIT language-range = language-tag = last-byte-pos = 1*DIGIT last-chunk = 1*"0" *WSP [ chunk-ext ] CRLF mailbox = media-range = ( "*/*" / ( type "/*" ) / ( type "/" subtype ) ) *( OWS ";" OWS parameter ) media-type = type "/" subtype *( OWS ";" OWS parameter ) message-body = *OCTET minute = 2DIGIT month = %x4A.61.6E ; Jan / %x46.65.62 ; Feb / %x4D.61.72 ; Mar / %x41.70.72 ; Apr / %x4D.61.79 ; May / %x4A.75.6E ; Jun / %x4A.75.6C ; Jul / %x41.75.67 ; Aug / %x53.65.70 ; Sep / %x4F.63.74 ; Oct / %x4E.6F.76 ; Nov / %x44.65.63 ; Dec obs-date = rfc850-date / asctime-date obs-fold = CRLF obs-text = %x80-FF opaque-tag = quoted-string other-content-range-spec = other-range-unit SP other-range-resp-spec other-range-resp-spec = *CHAR other-range-set = 1*CHAR other-range-unit = token other-ranges-specifier = other-range-unit "=" other-range-set parameter = attribute "=" value partial-URI = relative-part [ "?" query ] path-abempty = path-absolute = port = pragma-directive = "no-cache" / extension-pragma product = token [ "/" product-version ] product-version = token protocol-name = token protocol-version = token pseudonym = token qdtext = OWS / "!" / %x23-5B ; '#'-'[' / %x5D-7E ; ']'-'~' / obs-text qdtext-nf = WSP / "!" / %x23-5B ; '#'-'[' / %x5D-7E ; ']'-'~' / obs-text query = quoted-cpair = "\" ( WSP / VCHAR / obs-text ) quoted-pair = "\" ( WSP / VCHAR / obs-text ) quoted-str-nf = DQUOTE *( qdtext-nf / quoted-pair ) DQUOTE quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE qvalue = ( "0" [ "." *3DIGIT ] ) / ( "1" [ "." *3"0" ] ) range-unit = bytes-unit / other-range-unit realm = "realm=" realm-value realm-value = quoted-string received-by = ( uri-host [ ":" port ] ) / pseudonym received-protocol = [ protocol-name "/" ] protocol-version relative-part = request-target = "*" / absolute-URI / ( path-absolute [ "?" query ] ) / authority rfc1123-date = day-name "," SP date1 SP time-of-day SP GMT rfc850-date = day-name-l "," SP date2 SP time-of-day SP GMT second = 2DIGIT special = "(" / ")" / "<" / ">" / "@" / "," / ";" / ":" / "\" / DQUOTE / "/" / "[" / "]" / "?" / "=" / "{" / "}" start-line = Request-Line / Status-Line subtype = token suffix-byte-range-spec = "-" suffix-length suffix-length = 1*DIGIT t-codings = "trailers" / ( transfer-extension [ te-params ] ) tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~" / DIGIT / ALPHA te-ext = OWS ";" OWS token [ "=" word ] te-params = OWS ";" OWS "q=" qvalue *te-ext time-of-day = hour ":" minute ":" second token = 1*tchar trailer-part = *( header-field CRLF ) transfer-coding = "chunked" / "compress" / "deflate" / "gzip" / transfer-extension transfer-extension = token *( OWS ";" OWS transfer-parameter ) transfer-parameter = attribute BWS "=" BWS value type = token uri-host = value = word warn-agent = ( uri-host [ ":" port ] ) / pseudonym warn-code = 3DIGIT warn-date = DQUOTE HTTP-date DQUOTE warn-text = quoted-string warning-value = warn-code SP warn-agent SP warn-text [ SP warn-date ] weak = %x57.2F ; W/ word = token / quoted-string year = 4DIGIT ; Accept defined but not used ; Accept-Charset defined but not used ; Accept-Encoding defined but not used ; Accept-Language defined but not used ; Accept-Ranges defined but not used ; Age defined but not used ; Allow defined but not used ; Authorization defined but not used ; Cache-Control defined but not used ; Chunked-Body defined but not used ; Connection defined but not used ; Content-Encoding defined but not used ; Content-Language defined but not used ; Content-Length defined but not used ; Content-Location defined but not used ; Content-MD5 defined but not used ; Content-Range defined but not used ; Content-Type defined but not used ; Date defined but not used ; ETag defined but not used ; Expect defined but not used ; Expires defined but not used ; From defined but not used ; HTTP-message defined but not used ; Host defined but not used ; If-Match defined but not used ; If-Modified-Since defined but not used ; If-None-Match defined but not used ; If-Range defined but not used ; If-Unmodified-Since defined but not used ; Last-Modified defined but not used ; Location defined but not used ; MIME-Version defined but not used ; Max-Forwards defined but not used ; Pragma defined but not used ; Proxy-Authenticate defined but not used ; Proxy-Authorization defined but not used ; Range defined but not used ; Referer defined but not used ; Request defined but not used ; Response defined but not used ; Retry-After defined but not used ; Server defined but not used ; TE defined but not used ; Trailer defined but not used ; Transfer-Encoding defined but not used ; Upgrade defined but not used ; User-Agent defined but not used ; Vary defined but not used ; Via defined but not used ; WWW-Authenticate defined but not used ; Warning defined but not used ; http-URI defined but not used ; https-URI defined but not used ; realm defined but not used ; special defined but not used