* 2,2 Basic Rules - 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. - 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). * 3.1 HTTP Version - Note that the major and minor numbers MUST be treated as separate integers and that each MAY be incremented higher than a single digit. - 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. - 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. * 3.2 URIs ** General Syntax - Servers MUST be able to handle the URI of any resource they serve. - Servers 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 ** http URL - If the abs_path is not present in the URL, it MUST be given as "/" when used as a Request-URI for a resource. - If a proxy receives a fully qualified domain name, the proxy MUST NOT change the host name. ** 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 "/" * 3.3 Date/Time Formats ** 3.3.1 Full Date Formats: (RFC 822/1123, RFC850/1036, asctime()) - 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 in header fields. - All HTTP date/time stamps MUST be represented in GMT (UTC), without exception... This is indicated in the first two formats by the inclusion of "GMT" as the three-letter abbreviation for time zone, and MUST be assumed when reading the asctime format. - HTTP-date is case sensitive and MUST NOT include additional LWS beyond that specifically included as SP in the grammar. * 3.4 Character Sets - HTTP uses the same definition of the term “character set” as that described for MIME. - Character set tokens are defined by the IANA Character Set registry. - ...any token that has a predefined value within the IANA Character Set registry MUST represent the character set defined by that registry. - Applications SHOULD limit their use of character sets to those defined by the IANA registry. ** 3.4.1 Missing Charset -