o respond appropriately with a message in the same protocol
version used by the client.
HTTP/1.0 clients must:
o recognize the format of the Status-Line for HTTP/1.0 responses;
o understand any valid response in the format of HTTP/0.9 or
HTTP/1.0.
Proxy and gateway applications must be careful in forwarding requests
that are received in a format different than that of the
application's native HTTP version. Since the protocol version
indicates the protocol capability of the sender, a proxy/gateway must
never send a message with a version indicator which is greater than
its native version; if a higher version request is received, the
proxy/gateway must either downgrade the request version or respond
with an error. Requests with a version lower than that of the
application's native format may be upgraded before being forwarded;
the proxy/gateway's response to that request must follow the server
requirements listed above.
RFC 1945 HTTP/1.0 May 1996
3.2 Uniform Resource Identifiers
URIs have been known by many names: WWW addresses, Universal Document
Identifiers, Universal Resource Identifiers [2], and finally the
combination of Uniform Resource Locators (URL) [4] and Names (URN)
[16]. As far as HTTP is concerned, Uniform Resource Identifiers are
simply formatted strings which identify--via name, location, or any
other characteristic--a network resource.
3.2.1 General Syntax
URIs in HTTP can be represented in absolute form or relative to some
known base URI [9], 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.
URI = ( absoluteURI | relativeURI ) [ "#" fragment ]
absoluteURI = scheme ":" *( uchar | reserved )
relativeURI = net_path | abs_path | rel_path
net_path = "//" net_loc [ abs_path ]
abs_path = "/" rel_path
rel_path = [ path ] [ ";" params ] [ "?" query ]
path = fsegment *( "/" segment )
fsegment = 1*pchar
segment = *pchar
params = param *( ";" param )
param = *( pchar | "/" )
scheme = 1*( ALPHA | DIGIT | "+" | "-" | "." )
net_loc = *( pchar | ";" | "?" )
query = *( uchar | reserved )
fragment = *( uchar | reserved )
pchar = uchar | ":" | "@" | "&" | "=" | "+"
uchar = unreserved | escape
unreserved = ALPHA | DIGIT | safe | extra | national
escape = "%" HEX HEX
reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+"
extra = "!" | "*" | "'" | "(" | ")" | ","
safe = "$" | "-" | "_" | "."
unsafe = CTL | SP | <"> | "#" | "%" | "<" | ">"
national = <any OCTET excluding ALPHA, DIGIT,
RFC 1945 HTTP/1.0 May 1996
reserved, extra, safe, and unsafe>
For definitive information on URL syntax and semantics, see RFC 1738
[4] and RFC 1808 [9]. The BNF above includes national characters not
allowed in valid URLs as specified by RFC 1738, since HTTP servers
are not restricted in the set of unreserved characters allowed to
represent the rel_path part of addresses, and HTTP proxies may
receive requests for URIs not defined by RFC 1738.
3.2.2 http URL
=8= |