⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc2616.txt

📁 C/C++语言的CGI接口库
💻 TXT
📖 第 1 页 / 共 5 页
字号:
   describe basic parsing constructs. The US-ASCII coded character set   is defined by ANSI X3.4-1986 [21].Fielding, et al.            Standards Track                    [Page 15]RFC 2616                        HTTP/1.1                       June 1999       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 defines the sequence CR LF as the end-of-line marker for all   protocol elements except the entity-body (see appendix 19.3 for   tolerant applications). The end-of-line marker within an entity-body   is defined by its associated media type, as described in section 3.7.       CRLF           = CR LF   HTTP/1.1 header field values can be folded onto multiple lines if the   continuation line begins with a space or horizontal tab. All linear   white space, including folding, has the same semantics as SP. A   recipient MAY replace any linear white space with a single SP before   interpreting the field value or forwarding the message downstream.       LWS            = [CRLF] 1*( SP | HT )   The TEXT rule is only used for descriptive field contents and values   that are not intended to be interpreted by the message parser. Words   of *TEXT MAY contain characters from character sets other than ISO-   8859-1 [22] only when encoded according to the rules of RFC 2047   [14].       TEXT           = <any OCTET except CTLs,                        but including LWS>   A CRLF is allowed in the definition of TEXT only as part of a header   field continuation. It is expected that the folding LWS will be   replaced with a single SP before interpretation of the TEXT value.   Hexadecimal numeric characters are used in several protocol elements.       HEX            = "A" | "B" | "C" | "D" | "E" | "F"                      | "a" | "b" | "c" | "d" | "e" | "f" | DIGITFielding, et al.            Standards Track                    [Page 16]RFC 2616                        HTTP/1.1                       June 1999   Many HTTP/1.1 header field values consist of words separated by LWS   or special characters. These special characters MUST be in a quoted   string to be used within a parameter value (as defined in section   3.6).       token          = 1*<any CHAR except CTLs or separators>       separators     = "(" | ")" | "<" | ">" | "@"                      | "," | ";" | ":" | "\" | <">                      | "/" | "[" | "]" | "?" | "="                      | "{" | "}" | SP | HT   Comments can be included in some HTTP header fields by surrounding   the comment text with parentheses. Comments are only allowed in   fields containing "comment" as part of their field value definition.   In all other fields, parentheses are considered part of the field   value.       comment        = "(" *( ctext | quoted-pair | comment ) ")"       ctext          = <any TEXT excluding "(" and ")">   A string of text is parsed as a single word if it is quoted using   double-quote marks.       quoted-string  = ( <"> *(qdtext | quoted-pair ) <"> )       qdtext         = <any TEXT except <">>   The backslash character ("\") MAY be used as a single-character   quoting mechanism only within quoted-string and comment constructs.       quoted-pair    = "\" CHAR3 Protocol Parameters3.1 HTTP Version   HTTP uses a "<major>.<minor>" numbering scheme to indicate versions   of the protocol. The protocol versioning policy is intended to allow   the sender to indicate the format of a message and its capacity for   understanding further HTTP communication, rather than the features   obtained via that communication. No change is made to the version   number for the addition of message components which do not affect   communication behavior or which only add to extensible field values.   The <minor> number is incremented when the changes made to the   protocol add features which do not change the general message parsing   algorithm, but which may add to the message semantics and imply   additional capabilities of the sender. The <major> number is   incremented when the format of a message within the protocol is   changed. See RFC 2145 [36] for a fuller explanation.Fielding, et al.            Standards Track                    [Page 17]RFC 2616                        HTTP/1.1                       June 1999   The version of an HTTP message is indicated by an HTTP-Version field   in the first line of the message.       HTTP-Version   = "HTTP" "/" 1*DIGIT "." 1*DIGIT   Note that the major and minor numbers MUST be treated as separate   integers and that each MAY be incremented higher than a single digit.   Thus, HTTP/2.4 is a lower version than HTTP/2.13, which in turn is   lower than HTTP/12.3. Leading zeros MUST be ignored by recipients and   MUST NOT be sent.   An application that sends a request or response message that includes   HTTP-Version of "HTTP/1.1" MUST be at least conditionally compliant   with this specification. Applications that are at least conditionally   compliant with this specification SHOULD use an HTTP-Version of   "HTTP/1.1" in their messages, and MUST do so for any message that is   not compatible with HTTP/1.0. For more details on when to send   specific HTTP-Version values, see RFC 2145 [36].   The HTTP version of an application is the highest HTTP version for   which the application is at least conditionally compliant.   Proxy and gateway applications need to be careful when forwarding   messages in protocol versions different from that of the application.   Since the protocol version indicates the protocol capability of the   sender, a proxy/gateway MUST NOT send a message with a version   indicator which is greater than its actual version. If a higher   version request is received, the proxy/gateway MUST either downgrade   the request version, or respond with an error, or switch to tunnel   behavior.   Due to interoperability problems with HTTP/1.0 proxies discovered   since the publication of RFC 2068[33], caching proxies MUST, gateways   MAY, and tunnels MUST NOT upgrade the request to the highest version   they support. The proxy/gateway's response to that request MUST be in   the same major version as the request.      Note: Converting between versions of HTTP may involve modification      of header fields required or forbidden by the versions involved.3.2 Uniform Resource Identifiers   URIs have been known by many names: WWW addresses, Universal Document   Identifiers, Universal Resource Identifiers [3], and finally the   combination of Uniform Resource Locators (URL) [4] and Names (URN)   [20]. As far as HTTP is concerned, Uniform Resource Identifiers are   simply formatted strings which identify--via name, location, or any   other characteristic--a resource.Fielding, et al.            Standards Track                    [Page 18]RFC 2616                        HTTP/1.1                       June 19993.2.1 General Syntax   URIs in HTTP can be represented in absolute form or relative to some   known base URI [11], depending upon the context of their use. The two   forms are differentiated by the fact that absolute URIs always begin   with a scheme name followed by a colon. For definitive information on   URL syntax and semantics, see "Uniform Resource Identifiers (URI):   Generic Syntax and Semantics," RFC 2396 [42] (which replaces RFCs   1738 [4] and RFC 1808 [11]). This specification adopts the   definitions of "URI-reference", "absoluteURI", "relativeURI", "port",   "host","abs_path", "rel_path", and "authority" from that   specification.   The HTTP protocol does not place any a priori limit on the length of   a URI. Servers MUST be able to handle the URI of any resource they   serve, and SHOULD be able to handle URIs of unbounded length if they   provide GET-based forms that could generate such URIs. A server   SHOULD return 414 (Request-URI Too Long) status if a URI is longer   than the server can handle (see section 10.4.15).      Note: Servers ought to be cautious about depending on URI lengths      above 255 bytes, because some older client or proxy      implementations might not properly support these lengths.3.2.2 http URL   The "http" scheme is used to locate network resources via the HTTP   protocol. This section defines the scheme-specific syntax and   semantics for http URLs.   http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]   If the port is empty or not given, port 80 is assumed. The semantics   are that the identified resource is located at the server listening   for TCP connections on that port of that host, and the Request-URI   for the resource is abs_path (section 5.1.2). The use of IP addresses   in URLs SHOULD be avoided whenever possible (see RFC 1900 [24]). If   the abs_path is not present in the URL, it MUST be given as "/" when   used as a Request-URI for a resource (section 5.1.2). If a proxy   receives a host name which is not a fully qualified domain name, it   MAY add its domain to the host name it received. If a proxy receives   a fully qualified domain name, the proxy MUST NOT change the host   name.Fielding, et al.            Standards Track                    [Page 19]RFC 2616                        HTTP/1.1                       June 19993.2.3 URI Comparison   When comparing two URIs to decide if they match or not, a client   SHOULD use a case-sensitive octet-by-octet comparison of the entire   URIs, with these exceptions:      - A port that is empty or not given is equivalent to the default        port for that URI-reference;        - Comparisons of host names MUST be case-insensitive;        - Comparisons of scheme names MUST be case-insensitive;        - An empty abs_path is equivalent to an abs_path of "/".   Characters other than those in the "reserved" and "unsafe" sets (see   RFC 2396 [42]) are equivalent to their ""%" HEX HEX" encoding.   For example, the following three URIs are equivalent:      http://abc.com:80/~smith/home.html      http://ABC.com/%7Esmith/home.html      http://ABC.com:/%7esmith/home.html3.3 Date/Time Formats3.3.1 Full Date   HTTP applications have historically allowed three different formats   for the representation of date/time stamps:      Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 822, updated by RFC 1123      Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036      Sun Nov  6 08:49:37 1994       ; ANSI C's asctime() format   The first format is preferred as an Internet standard and represents   a fixed-length subset of that defined by RFC 1123 [8] (an update to   RFC 822 [9]). The second format is in common use, but is based on the   obsolete RFC 850 [12] date format and lacks a four-digit year.   HTTP/1.1 clients and servers that parse the date value MUST accept   all three formats (for compatibility with HTTP/1.0), though they MUST   only generate the RFC 1123 format for representing HTTP-date values

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -