diff options
Diffstat (limited to 'doc/rfc/rfc1808.txt')
-rw-r--r-- | doc/rfc/rfc1808.txt | 899 |
1 files changed, 899 insertions, 0 deletions
diff --git a/doc/rfc/rfc1808.txt b/doc/rfc/rfc1808.txt new file mode 100644 index 0000000..4f7763f --- /dev/null +++ b/doc/rfc/rfc1808.txt @@ -0,0 +1,899 @@ + + + + + + +Network Working Group R. Fielding +Request for Comments: 1808 UC Irvine +Category: Standards Track June 1995 + + + Relative Uniform Resource Locators + +Status of this Memo + + This document specifies an Internet standards track protocol for the + Internet community, and requests discussion and suggestions for + improvements. Please refer to the current edition of the "Internet + Official Protocol Standards" (STD 1) for the standardization state + and status of this protocol. Distribution of this memo is unlimited. + +Abstract + + A Uniform Resource Locator (URL) is a compact representation of the + location and access method for a resource available via the Internet. + When embedded within a base document, a URL in its absolute form may + contain a great deal of information which is already known from the + context of that base document's retrieval, including the scheme, + network location, and parts of the url-path. In situations where the + base URL is well-defined and known to the parser (human or machine), + it is useful to be able to embed URL references which inherit that + context rather than re-specifying it in every instance. This + document defines the syntax and semantics for such Relative Uniform + Resource Locators. + +1. Introduction + + This document describes the syntax and semantics for "relative" + Uniform Resource Locators (relative URLs): a compact representation + of the location of a resource relative to an absolute base URL. It + is a companion to RFC 1738, "Uniform Resource Locators (URL)" [2], + which specifies the syntax and semantics of absolute URLs. + + A common use for Uniform Resource Locators is to embed them within a + document (referred to as the "base" document) for the purpose of + identifying other Internet-accessible resources. For example, in + hypertext documents, URLs can be used as the identifiers for + hypertext link destinations. + + Absolute URLs contain a great deal of information which may already + be known from the context of the base document's retrieval, including + the scheme, network location, and parts of the URL path. In + situations where the base URL is well-defined and known, it is useful + to be able to embed a URL reference which inherits that context + + + +Fielding Standards Track [Page 1] + +RFC 1808 Relative Uniform Resource Locators June 1995 + + + rather than re-specifying it within each instance. Relative URLs can + also be used within data-entry dialogs to decrease the number of + characters necessary to describe a location. + + In addition, it is often the case that a group or "tree" of documents + has been constructed to serve a common purpose; the vast majority of + URLs in these documents point to locations within the tree rather + than outside of it. Similarly, documents located at a particular + Internet site are much more likely to refer to other resources at + that site than to resources at remote sites. + + Relative addressing of URLs allows document trees to be partially + independent of their location and access scheme. For instance, it is + possible for a single set of hypertext documents to be simultaneously + accessible and traversable via each of the "file", "http", and "ftp" + schemes if the documents refer to each other using relative URLs. + Furthermore, document trees can be moved, as a whole, without + changing any of the embedded URLs. Experience within the World-Wide + Web has demonstrated that the ability to perform relative referencing + is necessary for the long-term usability of embedded URLs. + +2. Relative URL Syntax + + The syntax for relative URLs is a shortened form of that for absolute + URLs [2], where some prefix of the URL is missing and certain path + components ("." and "..") have a special meaning when interpreting a + relative path. Because a relative URL may appear in any context that + could hold an absolute URL, systems that support relative URLs must + be able to recognize them as part of the URL parsing process. + + Although this document does not seek to define the overall URL + syntax, some discussion of it is necessary in order to describe the + parsing of relative URLs. In particular, base documents can only + make use of relative URLs when their base URL fits within the + generic-RL syntax described below. Although some URL schemes do not + require this generic-RL syntax, it is assumed that any document which + contains a relative reference does have a base URL that obeys the + syntax. In other words, relative URLs cannot be used within + documents that have unsuitable base URLs. + +2.1. URL Syntactic Components + + The URL syntax is dependent upon the scheme. Some schemes use + reserved characters like "?" and ";" to indicate special components, + while others just consider them to be part of the path. However, + there is enough uniformity in the use of URLs to allow a parser to + resolve relative URLs based upon a single, generic-RL syntax. This + generic-RL syntax consists of six components: + + + +Fielding Standards Track [Page 2] + +RFC 1808 Relative Uniform Resource Locators June 1995 + + + <scheme>://<net_loc>/<path>;<params>?<query>#<fragment> + + each of which, except <scheme>, may be absent from a particular URL. + These components are defined as follows (a complete BNF is provided + in Section 2.2): + + scheme ":" ::= scheme name, as per Section 2.1 of RFC 1738 [2]. + + "//" net_loc ::= network location and login information, as per + Section 3.1 of RFC 1738 [2]. + + "/" path ::= URL path, as per Section 3.1 of RFC 1738 [2]. + + ";" params ::= object parameters (e.g., ";type=a" as in + Section 3.2.2 of RFC 1738 [2]). + + "?" query ::= query information, as per Section 3.3 of + RFC 1738 [2]. + + "#" fragment ::= fragment identifier. + + Note that the fragment identifier (and the "#" that precedes it) is + not considered part of the URL. However, since it is commonly used + within the same string context as a URL, a parser must be able to + recognize the fragment when it is present and set it aside as part of + the parsing process. + + The order of the components is important. If both <params> and + <query> are present, the <query> information must occur after the + <params>. + +2.2. BNF for Relative URLs + + This is a BNF-like description of the Relative Uniform Resource + Locator syntax, using the conventions of RFC 822 [5], except that "|" + is used to designate alternatives. Briefly, literals are quoted with + "", parentheses "(" and ")" are used to group elements, optional + elements are enclosed in [brackets], and elements may be preceded + with <n>* to designate n or more repetitions of the following + element; n defaults to 0. + + This BNF also describes the generic-RL syntax for valid base URLs. + Note that this differs from the URL syntax defined in RFC 1738 [2] in + that all schemes are required to use a single set of reserved + characters and use them consistently within the major URL components. + + + + + + +Fielding Standards Track [Page 3] + +RFC 1808 Relative Uniform Resource Locators June 1995 + + + URL = ( absoluteURL | relativeURL ) [ "#" fragment ] + + absoluteURL = generic-RL | ( scheme ":" *( uchar | reserved ) ) + + generic-RL = scheme ":" relativeURL + + relativeURL = 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 + + escape = "%" hex hex + hex = digit | "A" | "B" | "C" | "D" | "E" | "F" | + "a" | "b" | "c" | "d" | "e" | "f" + + alpha = lowalpha | hialpha + lowalpha = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | + "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | + "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z" + hialpha = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | + "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | + "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" + + digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | + "8" | "9" + + safe = "$" | "-" | "_" | "." | "+" + extra = "!" | "*" | "'" | "(" | ")" | "," + national = "{" | "}" | "|" | "\" | "^" | "~" | "[" | "]" | "`" + reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" + punctuation = "<" | ">" | "#" | "%" | <"> + + + +Fielding Standards Track [Page 4] + +RFC 1808 Relative Uniform Resource Locators June 1995 + + +2.3. Specific Schemes and their Syntactic Categories + + Each URL scheme has its own rules regarding the presence or absence + of the syntactic components described in Sections 2.1 and 2.2. In + addition, some schemes are never appropriate for use with relative + URLs. However, since relative URLs will only be used within contexts + in which they are useful, these scheme-specific differences can be + ignored by the resolution process. + + Within this section, we include as examples only those schemes that + have a defined URL syntax in RFC 1738 [2]. The following schemes are + never used with relative URLs: + + mailto Electronic Mail + news USENET news + telnet TELNET Protocol for Interactive Sessions + + Some URL schemes allow the use of reserved characters for purposes + outside the generic-RL syntax given above. However, such use is + rare. Relative URLs can be used with these schemes whenever the + applicable base URL follows the generic-RL syntax. + + gopher Gopher and Gopher+ Protocols + prospero Prospero Directory Service + wais Wide Area Information Servers Protocol + + Users of gopher URLs should note that gopher-type information is + almost always included at the beginning of what would be the + generic-RL path. If present, this type information prevents + relative-path references to documents with differing gopher-types. + + Finally, the following schemes can always be parsed using the + generic-RL syntax. This does not necessarily imply that relative + URLs will be useful with these schemes -- that decision is left to + the system implementation and the author of the base document. + + file Host-specific Files + ftp File Transfer Protocol + http Hypertext Transfer Protocol + nntp USENET news using NNTP access + + NOTE: Section 5 of RFC 1738 specifies that the question-mark + character ("?") is allowed in an ftp or file path segment. + However, this is not true in practice and is believed to be an + error in the RFC. Similarly, RFC 1738 allows the reserved + character semicolon (";") within an http path segment, but does + not define its semantics; the correct semantics are as defined + by this document for <params>. + + + +Fielding Standards Track [Page 5] + +RFC 1808 Relative Uniform Resource Locators June 1995 + + + We recommend that new schemes be designed to be parsable via the + generic-RL syntax if they are intended to be used with relative URLs. + A description of the allowed relative forms should be included when a + new scheme is registered, as per Section 4 of RFC 1738 [2]. + +2.4. Parsing a URL + + An accepted method for parsing URLs is useful to clarify the + generic-RL syntax of Section 2.2 and to describe the algorithm for + resolving relative URLs presented in Section 4. This section + describes the parsing rules for breaking down a URL (relative or + absolute) into the component parts described in Section 2.1. The + rules assume that the URL has already been separated from any + surrounding text and copied to a "parse string". The rules are + listed in the order in which they would be applied by the parser. + +2.4.1. Parsing the Fragment Identifier + + If the parse string contains a crosshatch "#" character, then the + substring after the first (left-most) crosshatch "#" and up to the + end of the parse string is the <fragment> identifier. If the + crosshatch is the last character, or no crosshatch is present, then + the fragment identifier is empty. The matched substring, including + the crosshatch character, is removed from the parse string before + continuing. + + Note that the fragment identifier is not considered part of the URL. + However, since it is often attached to the URL, parsers must be able + to recognize and set aside fragment identifiers as part of the + process. + +2.4.2. Parsing the Scheme + + If the parse string contains a colon ":" after the first character + and before any characters not allowed as part of a scheme name (i.e., + any not an alphanumeric, plus "+", period ".", or hyphen "-"), the + <scheme> of the URL is the substring of characters up to but not + including the first colon. These characters and the colon are then + removed from the parse string before continuing. + +2.4.3. Parsing the Network Location/Login + + If the parse string begins with a double-slash "//", then the + substring of characters after the double-slash and up to, but not + including, the next slash "/" character is the network location/login + (<net_loc>) of the URL. If no trailing slash "/" is present, the + entire remaining parse string is assigned to <net_loc>. The double- + slash and <net_loc> are removed from the parse string before + + + +Fielding Standards Track [Page 6] + +RFC 1808 Relative Uniform Resource Locators June 1995 + + + continuing. + +2.4.4. Parsing the Query Information + + If the parse string contains a question mark "?" character, then the + substring after the first (left-most) question mark "?" and up to the + end of the parse string is the <query> information. If the question + mark is the last character, or no question mark is present, then the + query information is empty. The matched substring, including the + question mark character, is removed from the parse string before + continuing. + +2.4.5. Parsing the Parameters + + If the parse string contains a semicolon ";" character, then the + substring after the first (left-most) semicolon ";" and up to the end + of the parse string is the parameters (<params>). If the semicolon + is the last character, or no semicolon is present, then <params> is + empty. The matched substring, including the semicolon character, is + removed from the parse string before continuing. + +2.4.6. Parsing the Path + + After the above steps, all that is left of the parse string is the + URL <path> and the slash "/" that may precede it. Even though the + initial slash is not part of the URL path, the parser must remember + whether or not it was present so that later processes can + differentiate between relative and absolute paths. Often this is + done by simply storing the preceding slash along with the path. + +3. Establishing a Base URL + + The term "relative URL" implies that there exists some absolute "base + URL" against which the relative reference is applied. Indeed, the + base URL is necessary to define the semantics of any embedded + relative URLs; without it, a relative reference is meaningless. In + order for relative URLs to be usable within a document, the base URL + of that document must be known to the parser. + + + + + + + + + + + + + +Fielding Standards Track [Page 7] + +RFC 1808 Relative Uniform Resource Locators June 1995 + + + The base URL of a document can be established in one of four ways, + listed below in order of precedence. The order of precedence can be + thought of in terms of layers, where the innermost defined base URL + has the highest precedence. This can be visualized graphically as: + + .----------------------------------------------------------. + | .----------------------------------------------------. | + | | .----------------------------------------------. | | + | | | .----------------------------------------. | | | + | | | | (3.1) Base URL embedded in the | | | | + | | | | document's content | | | | + | | | `----------------------------------------' | | | + | | | (3.2) Base URL of the encapsulating entity | | | + | | | (message, document, or none). | | | + | | `----------------------------------------------' | | + | | (3.3) URL used to retrieve the entity | | + | `----------------------------------------------------' | + | (3.4) Base URL = "" (undefined) | + `----------------------------------------------------------' + +3.1. Base URL within Document Content + + Within certain document media types, the base URL of the document can + be embedded within the content itself such that it can be readily + obtained by a parser. This can be useful for descriptive documents, + such as tables of content, which may be transmitted to others through + protocols other than their usual retrieval context (e.g., E-Mail or + USENET news). + + It is beyond the scope of this document to specify how, for each + media type, the base URL can be embedded. It is assumed that user + agents manipulating such media types will be able to obtain the + appropriate syntax from that media type's specification. An example + of how the base URL can be embedded in the Hypertext Markup Language + (HTML) [3] is provided in an Appendix (Section 10). + + Messages are considered to be composite documents. The base URL of a + message can be specified within the message headers (or equivalent + tagged metainformation) of the message. For protocols that make use + of message headers like those described in RFC 822 [5], we recommend + that the format of this header be: + + base-header = "Base" ":" "<URL:" absoluteURL ">" + + where "Base" is case-insensitive and any whitespace (including that + used for line folding) inside the angle brackets is ignored. For + example, the header field + + + + +Fielding Standards Track [Page 8] + +RFC 1808 Relative Uniform Resource Locators June 1995 + + + Base: <URL:http://www.ics.uci.edu/Test/a/b/c> + + would indicate that the base URL for that message is the string + "http://www.ics.uci.edu/Test/a/b/c". The base URL for a message + serves as both the base for any relative URLs within the message + headers and the default base URL for documents enclosed within the + message, as described in the next section. + + Protocols which do not use the RFC 822 message header syntax, but + which do allow some form of tagged metainformation to be included + within messages, may define their own syntax for defining the base + URL as part of a message. + +3.2. Base URL from the Encapsulating Entity + + If no base URL is embedded, the base URL of a document is defined by + the document's retrieval context. For a document that is enclosed + within another entity (such as a message or another document), the + retrieval context is that entity; thus, the default base URL of the + document is the base URL of the entity in which the document is + encapsulated. + + Composite media types, such as the "multipart/*" and "message/*" + media types defined by MIME (RFC 1521, [4]), define a hierarchy of + retrieval context for their enclosed documents. In other words, the + retrieval context of a component part is the base URL of the + composite entity of which it is a part. Thus, a composite entity can + redefine the retrieval context of its component parts via the + inclusion of a base-header, and this redefinition applies recursively + for a hierarchy of composite parts. Note that this might not change + the base URL of the components, since each component may include an + embedded base URL or base-header that takes precedence over the + retrieval context. + +3.3. Base URL from the Retrieval URL + + If no base URL is embedded and the document is not encapsulated + within some other entity (e.g., the top level of a composite entity), + then, if a URL was used to retrieve the base document, that URL shall + be considered the base URL. Note that if the retrieval was the + result of a redirected request, the last URL used (i.e., that which + resulted in the actual retrieval of the document) is the base URL. + +3.4. Default Base URL + + If none of the conditions described in Sections 3.1 -- 3.3 apply, + then the base URL is considered to be the empty string and all + embedded URLs within that document are assumed to be absolute URLs. + + + +Fielding Standards Track [Page 9] + +RFC 1808 Relative Uniform Resource Locators June 1995 + + + It is the responsibility of the distributor(s) of a document + containing relative URLs to ensure that the base URL for that + document can be established. It must be emphasized that relative + URLs cannot be used reliably in situations where the document's base + URL is not well-defined. + +4. Resolving Relative URLs + + This section describes an example algorithm for resolving URLs within + a context in which the URLs may be relative, such that the result is + always a URL in absolute form. Although this algorithm cannot + guarantee that the resulting URL will equal that intended by the + original author, it does guarantee that any valid URL (relative or + absolute) can be consistently transformed to an absolute form given a + valid base URL. + + The following steps are performed in order: + + Step 1: The base URL is established according to the rules of + Section 3. If the base URL is the empty string (unknown), + the embedded URL is interpreted as an absolute URL and + we are done. + + Step 2: Both the base and embedded URLs are parsed into their + component parts as described in Section 2.4. + + a) If the embedded URL is entirely empty, it inherits the + entire base URL (i.e., is set equal to the base URL) + and we are done. + + b) If the embedded URL starts with a scheme name, it is + interpreted as an absolute URL and we are done. + + c) Otherwise, the embedded URL inherits the scheme of + the base URL. + + Step 3: If the embedded URL's <net_loc> is non-empty, we skip to + Step 7. Otherwise, the embedded URL inherits the <net_loc> + (if any) of the base URL. + + Step 4: If the embedded URL path is preceded by a slash "/", the + path is not relative and we skip to Step 7. + + + + + + + + + +Fielding Standards Track [Page 10] + +RFC 1808 Relative Uniform Resource Locators June 1995 + + + Step 5: If the embedded URL path is empty (and not preceded by a + slash), then the embedded URL inherits the base URL path, + and + + a) if the embedded URL's <params> is non-empty, we skip to + step 7; otherwise, it inherits the <params> of the base + URL (if any) and + + b) if the embedded URL's <query> is non-empty, we skip to + step 7; otherwise, it inherits the <query> of the base + URL (if any) and we skip to step 7. + + Step 6: The last segment of the base URL's path (anything + following the rightmost slash "/", or the entire path if no + slash is present) is removed and the embedded URL's path is + appended in its place. The following operations are + then applied, in order, to the new path: + + a) All occurrences of "./", where "." is a complete path + segment, are removed. + + b) If the path ends with "." as a complete path segment, + that "." is removed. + + c) All occurrences of "<segment>/../", where <segment> is a + complete path segment not equal to "..", are removed. + Removal of these path segments is performed iteratively, + removing the leftmost matching pattern on each iteration, + until no matching pattern remains. + + d) If the path ends with "<segment>/..", where <segment> is a + complete path segment not equal to "..", that + "<segment>/.." is removed. + + Step 7: The resulting URL components, including any inherited from + the base URL, are recombined to give the absolute form of + the embedded URL. + + Parameters, regardless of their purpose, do not form a part of the + URL path and thus do not affect the resolving of relative paths. In + particular, the presence or absence of the ";type=d" parameter on an + ftp URL does not affect the interpretation of paths relative to that + URL. Fragment identifiers are only inherited from the base URL when + the entire embedded URL is empty. + + + + + + + +Fielding Standards Track [Page 11] + +RFC 1808 Relative Uniform Resource Locators June 1995 + + + The above algorithm is intended to provide an example by which the + output of implementations can be tested -- implementation of the + algorithm itself is not required. For example, some systems may find + it more efficient to implement Step 6 as a pair of segment stacks + being merged, rather than as a series of string pattern matches. + +5. Examples and Recommended Practice + + Within an object with a well-defined base URL of + + Base: <URL:http://a/b/c/d;p?q#f> + + the relative URLs would be resolved as follows: + +5.1. Normal Examples + + g:h = <URL:g:h> + g = <URL:http://a/b/c/g> + ./g = <URL:http://a/b/c/g> + g/ = <URL:http://a/b/c/g/> + /g = <URL:http://a/g> + //g = <URL:http://g> + ?y = <URL:http://a/b/c/d;p?y> + g?y = <URL:http://a/b/c/g?y> + g?y/./x = <URL:http://a/b/c/g?y/./x> + #s = <URL:http://a/b/c/d;p?q#s> + g#s = <URL:http://a/b/c/g#s> + g#s/./x = <URL:http://a/b/c/g#s/./x> + g?y#s = <URL:http://a/b/c/g?y#s> + ;x = <URL:http://a/b/c/d;x> + g;x = <URL:http://a/b/c/g;x> + g;x?y#s = <URL:http://a/b/c/g;x?y#s> + . = <URL:http://a/b/c/> + ./ = <URL:http://a/b/c/> + .. = <URL:http://a/b/> + ../ = <URL:http://a/b/> + ../g = <URL:http://a/b/g> + ../.. = <URL:http://a/> + ../../ = <URL:http://a/> + ../../g = <URL:http://a/g> + +5.2. Abnormal Examples + + Although the following abnormal examples are unlikely to occur in + normal practice, all URL parsers should be capable of resolving them + consistently. Each example uses the same base as above. + + + + + +Fielding Standards Track [Page 12] + +RFC 1808 Relative Uniform Resource Locators June 1995 + + + An empty reference resolves to the complete base URL: + + <> = <URL:http://a/b/c/d;p?q#f> + + Parsers must be careful in handling the case where there are more + relative path ".." segments than there are hierarchical levels in the + base URL's path. Note that the ".." syntax cannot be used to change + the <net_loc> of a URL. + + ../../../g = <URL:http://a/../g> + ../../../../g = <URL:http://a/../../g> + + Similarly, parsers must avoid treating "." and ".." as special when + they are not complete components of a relative path. + + /./g = <URL:http://a/./g> + /../g = <URL:http://a/../g> + g. = <URL:http://a/b/c/g.> + .g = <URL:http://a/b/c/.g> + g.. = <URL:http://a/b/c/g..> + ..g = <URL:http://a/b/c/..g> + + Less likely are cases where the relative URL uses unnecessary or + nonsensical forms of the "." and ".." complete path segments. + + ./../g = <URL:http://a/b/g> + ./g/. = <URL:http://a/b/c/g/> + g/./h = <URL:http://a/b/c/g/h> + g/../h = <URL:http://a/b/c/h> + + Finally, some older parsers allow the scheme name to be present in a + relative URL if it is the same as the base URL scheme. This is + considered to be a loophole in prior specifications of partial URLs + [1] and should be avoided by future parsers. + + http:g = <URL:http:g> + http: = <URL:http:> + +5.3. Recommended Practice + + Authors should be aware that path names which contain a colon ":" + character cannot be used as the first component of a relative URL + path (e.g., "this:that") because they will likely be mistaken for a + scheme name. It is therefore necessary to precede such cases with + other components (e.g., "./this:that"), or to escape the colon + character (e.g., "this%3Athat"), in order for them to be correctly + parsed. The former solution is preferred because it does not affect + the absolute form of the URL. + + + +Fielding Standards Track [Page 13] + +RFC 1808 Relative Uniform Resource Locators June 1995 + + + There is an ambiguity in the semantics for the ftp URL scheme + regarding the use of a trailing slash ("/") character and/or a + parameter ";type=d" to indicate a resource that is an ftp directory. + If the result of retrieving that directory includes embedded relative + URLs, it is necessary that the base URL path for that result include + a trailing slash. For this reason, we recommend that the ";type=d" + parameter value not be used within contexts that allow relative URLs. + +6. Security Considerations + + There are no security considerations in the use or parsing of + relative URLs. However, once a relative URL has been resolved to its + absolute form, the same security considerations apply as those + described in RFC 1738 [2]. + +7. Acknowledgements + + This work is derived from concepts introduced by Tim Berners-Lee and + the World-Wide Web global information initiative. Relative URLs are + described as "Partial URLs" in RFC 1630 [1]. That description was + expanded for inclusion as an appendix for an early draft of RFC 1738, + "Uniform Resource Locators (URL)" [2]. However, after further + discussion, the URI-WG decided to specify Relative URLs separately + from the primary URL draft. + + This document is intended to fulfill the recommendations for Internet + Resource Locators as stated in [6]. It has benefited greatly from + the comments of all those participating in the URI-WG. Particular + thanks go to Larry Masinter, Michael A. Dolan, Guido van Rossum, Dave + Kristol, David Robinson, and Brad Barber for identifying + problems/deficiencies in earlier drafts. + +8. References + + [1] Berners-Lee, T., "Universal Resource Identifiers in WWW: A + Unifying Syntax for the Expression of Names and Addresses of + Objects on the Network as used in the World-Wide Web", RFC 1630, + CERN, June 1994. + + [2] Berners-Lee, T., Masinter, L., and M. McCahill, Editors, "Uniform + Resource Locators (URL)", RFC 1738, CERN, Xerox Corporation, + University of Minnesota, December 1994. + + [3] Berners-Lee T., and D. Connolly, "HyperText Markup Language + Specification -- 2.0", Work in Progress, MIT, HaL Computer + Systems, February 1995. + <URL:http://www.ics.uci.edu/pub/ietf/html/> + + + + +Fielding Standards Track [Page 14] + +RFC 1808 Relative Uniform Resource Locators June 1995 + + + [4] Borenstein, N., and N. Freed, "MIME (Multipurpose Internet Mail + Extensions): Mechanisms for Specifying and Describing the Format + of Internet Message Bodies", RFC 1521, Bellcore, Innosoft, + September 1993. + + [5] Crocker, D., "Standard for the Format of ARPA Internet Text + Messages", STD 11, RFC 822, UDEL, August 1982. + + [6] Kunze, J., "Functional Recommendations for Internet Resource + Locators", RFC 1736, IS&T, UC Berkeley, February 1995. + +9. Author's Address + + Roy T. Fielding + Department of Information and Computer Science + University of California + Irvine, CA 92717-3425 + U.S.A. + + Tel: +1 (714) 824-4049 + Fax: +1 (714) 824-4056 + EMail: fielding@ics.uci.edu + +10. Appendix - Embedding the Base URL in HTML documents + + It is useful to consider an example of how the base URL of a document + can be embedded within the document's content. In this appendix, we + describe how documents written in the Hypertext Markup Language + (HTML) [3] can include an embedded base URL. This appendix does not + form a part of the relative URL specification and should not be + considered as anything more than a descriptive example. + + HTML defines a special element "BASE" which, when present in the + "HEAD" portion of a document, signals that the parser should use the + BASE element's "HREF" attribute as the base URL for resolving any + relative URLs. The "HREF" attribute must be an absolute URL. Note + that, in HTML, element and attribute names are case-insensitive. For + example: + + <!doctype html public "-//IETF//DTD HTML//EN"> + <HTML><HEAD> + <TITLE>An example HTML document</TITLE> + <BASE href="http://www.ics.uci.edu/Test/a/b/c"> + </HEAD><BODY> + ... <A href="../x">a hypertext anchor</A> ... + </BODY></HTML> + + + + + +Fielding Standards Track [Page 15] + +RFC 1808 Relative Uniform Resource Locators June 1995 + + + A parser reading the example document should interpret the given + relative URL "../x" as representing the absolute URL + + <URL:http://www.ics.uci.edu/Test/a/x> + + regardless of the context in which the example document was obtained. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Fielding Standards Track [Page 16] + |