draft-nottingham-http-link-header-04.txt   draft-nottingham-http-link-header-05.txt 
Network Working Group M. Nottingham Network Working Group M. Nottingham
Updates: 4287 (if approved) Updates: 4287 (if approved)
Intended status: Standards Track Intended status: Standards Track
Expires: August 29, 2009 Expires: October 19, 2009
Link Relations and HTTP Header Linking Web Linking
draft-nottingham-http-link-header-04 draft-nottingham-http-link-header-05
Status of this Memo Status of this Memo
This Internet-Draft is submitted to IETF in full conformance with the This Internet-Draft is submitted to IETF in full conformance with the
provisions of BCP 78 and BCP 79. This document may contain material provisions of BCP 78 and BCP 79. This document may contain material
from IETF Documents or IETF Contributions published or made publicly from IETF Documents or IETF Contributions published or made publicly
available before November 10, 2008. The person(s) controlling the available before November 10, 2008. The person(s) controlling the
copyright in some of this material may not have granted the IETF copyright in some of this material may not have granted the IETF
Trust the right to allow modifications of such material outside the Trust the right to allow modifications of such material outside the
IETF Standards Process. Without obtaining an adequate license from IETF Standards Process. Without obtaining an adequate license from
skipping to change at page 1, line 43 skipping to change at page 1, line 43
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on August 29, 2009. This Internet-Draft will expire on October 19, 2009.
Copyright Notice Copyright Notice
Copyright (c) 2009 IETF Trust and the persons identified as the Copyright (c) 2009 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents in effect on the date of Provisions Relating to IETF Documents in effect on the date of
publication of this document (http://trustee.ietf.org/license-info). publication of this document (http://trustee.ietf.org/license-info).
Please review these documents carefully, as they describe your rights Please review these documents carefully, as they describe your rights
skipping to change at page 2, line 21 skipping to change at page 2, line 21
Abstract Abstract
This document specifies relation types for Web links, and defines a This document specifies relation types for Web links, and defines a
registry for them. It also defines how to send such links in HTTP registry for them. It also defines how to send such links in HTTP
headers with the Link header-field. headers with the Link header-field.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Notational Conventions . . . . . . . . . . . . . . . . . . . . 3 2. Notational Conventions . . . . . . . . . . . . . . . . . . . . 3
3. Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3. Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4. Link Relation Types . . . . . . . . . . . . . . . . . . . . . 4 4. Link Relation Types . . . . . . . . . . . . . . . . . . . . . 4
5. The Link Header Field . . . . . . . . . . . . . . . . . . . . 5 4.1. Registered Relation Types . . . . . . . . . . . . . . . . 5
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 4.2. Extension Relation Types . . . . . . . . . . . . . . . . . 6
7. Security Considerations . . . . . . . . . . . . . . . . . . . 11 5. The Link Header Field . . . . . . . . . . . . . . . . . . . . 6
8. Internationalisation Considerations . . . . . . . . . . . . . 11 5.1. Examples . . . . . . . . . . . . . . . . . . . . . . . . . 7
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 12 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8
9.1. Normative References . . . . . . . . . . . . . . . . . . . 12 6.1. Link Header Registration . . . . . . . . . . . . . . . . . 8
9.2. Informative References . . . . . . . . . . . . . . . . . . 12 6.2. Link Relation Type Registry . . . . . . . . . . . . . . . 8
Appendix A. Notes on Using the Link Header with HTML4 . . . . . . 13 7. Security Considerations . . . . . . . . . . . . . . . . . . . 12
Appendix B. Notes on Using the Link Header with Atom . . . . . . 14 8. Internationalisation Considerations . . . . . . . . . . . . . 12
Appendix C. Acknowledgements . . . . . . . . . . . . . . . . . . 15 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Appendix D. Document history . . . . . . . . . . . . . . . . . . 15 9.1. Normative References . . . . . . . . . . . . . . . . . . . 13
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 17 9.2. Informative References . . . . . . . . . . . . . . . . . . 14
Appendix A. Notes on Using the Link Header with HTML4 . . . . . . 14
Appendix B. Notes on Using the Link Header with Atom . . . . . . 15
Appendix C. Defining New Link Serialisations . . . . . . . . . . 16
Appendix D. Acknowledgements . . . . . . . . . . . . . . . . . . 16
Appendix E. Document history . . . . . . . . . . . . . . . . . . 17
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 19
1. Introduction 1. Introduction
A means of indicating the relationships between resources on the Web, A means of indicating the relationships between resources on the Web,
as well as indicating the type of those relationships, has been as well as indicating the type of those relationships, has been
available for some time in HTML [W3C.REC-html401-19991224], and more available for some time in HTML [W3C.REC-html401-19991224], and more
recently in Atom [RFC4287]. These mechanisms, although conceptually recently in Atom [RFC4287]. These mechanisms, although conceptually
similar, are separately specified. However, links between resources similar, are separately specified. However, links between resources
need not be format-specific; it can be useful to have typed links need not be format-specific; it can be useful to have typed links
that are independent of the format, especially when a resource has that are independent of their serialisation, especially when a
representations in multiple formats. resource has representations in multiple formats.
To this end, this document defines a framework for typed links that To this end, this document defines a framework for typed links that
isn't specific to a particular serialisation or context of use. It isn't specific to a particular serialisation. It does so by re-
does so by re-defining the link relation registry established by Atom defining the link relation registry established by Atom to have a
to have a broader scope, and adding to it the relations that are broader scope, and adding to it the relations that are defined by
defined by HTML. HTML.
Furthermore, an HTTP header-field for conveying typed links was Furthermore, an HTTP header-field for conveying typed links was
defined in [RFC2068], but removed from [RFC2616], due to a lack of defined in [RFC2068], but removed from [RFC2616], due to a lack of
implementation experience. Since then, it has been implemented in implementation experience. Since then, it has been implemented in
some User-Agents (e.g., for stylesheets), and several additional use some User-Agents (e.g., for stylesheets), and several additional use
cases have surfaced. Because it was removed, the status of the Link cases have surfaced.
header is unclear, leading some to consider minting new application-
specific HTTP headers instead of reusing it. This document addresses Because it was removed, the status of the Link header is unclear,
this by re-specifying the Link header with updated but backwards- leading some to consider minting new application-specific HTTP
compatible syntax. headers instead of reusing it. This document addresses this by re-
specifying the Link header as one such serialisation, with updated
but backwards-compatible syntax.
[[ Feedback is welcome on the ietf-http-wg@w3.org mailing list, [[ Feedback is welcome on the ietf-http-wg@w3.org mailing list,
although this is NOT a work item of the HTTPBIS WG. ]] although this is NOT a work item of the HTTPBIS WG. ]]
2. Notational Conventions 2. Notational Conventions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in BCP 14, [RFC2119], as document are to be interpreted as described in BCP 14, [RFC2119], as
scoped to those conformance targets. scoped to those conformance targets.
skipping to change at page 4, line 6 skipping to change at page 4, line 10
[RFC2616], and explicitly includes the following rules from it: [RFC2616], and explicitly includes the following rules from it:
quoted-string, token, SP (space). Additionally, the following rules quoted-string, token, SP (space). Additionally, the following rules
are included from [RFC3986]: URI and URI-Reference, and from are included from [RFC3986]: URI and URI-Reference, and from
[RFC4288]: type-name. [RFC4288]: type-name.
3. Links 3. Links
In this specification, a link is a typed connection between two In this specification, a link is a typed connection between two
resources that are identified by IRIs [RFC3987], and is comprised of: resources that are identified by IRIs [RFC3987], and is comprised of:
o A context IRI, and o A context IRI, and
o A link relation type (Section 4), and o a link relation type (Section 4), and
o A target IRI. o a target IRI, and
o optionally, target attributes (e.g., hinting the media type
returned by the target URI).
A link can be viewed as a statement of the form "(context IRI) has a A link can be viewed as a statement of the form "{context IRI} has a
(relation type) resource at (target IRI)." {relation type} resource at {target IRI}, which has {target
attributes}."
Note that in the common case, the context IRI will also be a URI Note that in the common case, the context IRI will also be a URI
[RFC3986], because common protocols (such as HTTP) do not support [RFC3986], because common protocols (such as HTTP) do not support
dereferencing IRIs. Likewise, the target IRI will be converted to a dereferencing IRIs. Likewise, the target IRI will be converted to a
URI in serialisations that do not support IRIs (e.g., the Link URI (see [RFC3987], Section 3.1) in serialisations that do not
header). support IRIs (e.g., the Link header).
This specification does not place restrictions on the cardinality of This specification does not place restrictions on the cardinality of
links; there can be multiple links from and to a particular IRI, and links; there can be multiple links from and to a particular IRI, and
multiple links of different types between two given IRIs. multiple links of different types between two given IRIs. Likewise,
the relative ordering of links in any particular serialisation, or
between serialisations (e.g., the Link header and in-content links)
is not specified or significant in this specification; applications
that wish to consider ordering significant MAY do so.
Additionally, this specification does not define a general syntax for Target attributes are a set of key/value pairs. This specification
does not attempt to coordinate their names or use, but does provide
several common attributes for use in the Link HTTP header.
Finally, this specification does not define a general syntax for
expressing links, nor mandate a specific context for any given link; expressing links, nor mandate a specific context for any given link;
it is expected that applications of links will specify both aspects. it is expected that serialisations of links will specify both
One such application is communication of links through HTTP headers, aspects. One such serialisation is communication of links through
specified in Section 5. HTTP headers, specified in Section 5.
Such applications may further constrain or extend links (e.g., Such serialisations may further constrain or extend links (e.g.,
associating a media type hint). associating additional target attributes like a media type hint).
4. Link Relation Types 4. Link Relation Types
A link relation type identifies the semantics of a link. For A link relation type identifies the semantics of a link. For
example, a link with the relation type "copyright" indicates that the example, a link with the relation type "copyright" indicates that the
resource identified by the target IRI is a statement of the copyright resource identified by the target IRI is a statement of the copyright
terms applying to the current context IRI. terms applying to the current context IRI.
Relation types are not to be confused with media types [RFC4288]; Relation types are not to be confused with media types [RFC4288];
they do not identify the format of the representation that results they do not identify the format of the representation that results
when the link is dereferenced. Rather, they only describe how the when the link is dereferenced. Rather, they only describe how the
current context is related to another resource. current context is related to another resource.
As such, relation types are not format-specific, and MUST NOT specify As such, relation types are not format-specific, and MUST NOT specify
a particular format or media type that they are to be used with. a particular format or media type that they are to be used with.
Likewise, the context IRI for a given link is usually determined by Likewise, the context IRI for a given link is usually determined by
the serialisation of the link (e.g., the Link header, a HTML the serialisation of the link (e.g., the Link header, a HTML
document, etc.); a relation type SHOULD NOT specify the context IRI. document, etc.); a relation type SHOULD NOT specify the context IRI.
Relation types SHOULD NOT infer any additional semantics based upon
the presence or absence of another link relation, or its own
cardinality of occurrence. An exception to this is the combination
of the "alternate" and "stylesheet" registered relation types, which
have special meaning in HTML4 for historical reasons.
Consuming implementations SHOULD ignore relation types that they do Consuming implementations SHOULD ignore relation types that they do
not understand or have no need to process. not understand or have no need to process.
There are two kinds of relation types; registered and extension. There are two kinds of relation types; registered and extension.
4.1. Registered Relation Types 4.1. Registered Relation Types
Commonly-used relation types with a clear meaning that are shared Commonly-used relation types with a clear meaning that are shared
across applications can be registered as tokens for convenience and across applications can be registered as tokens for convenience and
to promote reuse. For example, "self" and "alternate" are registered to promote reuse. For example, "self" and "alternate" are registered
skipping to change at page 5, line 24 skipping to change at page 5, line 44
This draft establishes an IANA registry of such relation types; see This draft establishes an IANA registry of such relation types; see
Section 6.2. Section 6.2.
Registered relation types MUST conform to the token rule, and SHOULD Registered relation types MUST conform to the token rule, and SHOULD
conform to the sgml-name rule for compatibility with deployed conform to the sgml-name rule for compatibility with deployed
implementations; implementations;
sgml-name = ALPHA *( ALPHA | DIGIT | "." | "-" ) sgml-name = ALPHA *( ALPHA | DIGIT | "." | "-" )
Names that differ only in case from existing entries (e.g., "Foo" and Names that differ only in case from existing entries (e.g., "Foo" and
"foo") MUST NOT be registered. "foo") MUST NOT be registered. Registered relation types MUST be
compared in a case-insensitive fashion.
Registered relation types MUST be compared in a case-insensitive
fashion.
Although they are specified as tokens, applications wishing to Although registered relation types are specified as tokens,
internally refer to an extension relation type using a URI MAY do so applications wishing to internally refer to one using a URI MAY do so
by considering it relative to the base URI by considering it relative to the base URI
"http://www.iana.org/assignments/relation/". However, the URI form "http://www.iana.org/assignments/relation/". However, the URI form
of a registered relation type SHOULD NOT be serialised when an of a registered relation type SHOULD NOT be serialised when an
application specifies the use of a relation type, because a consuming application specifies the use of a relation type, because a consuming
implementation may not recognise it. implementation may not recognise it.
4.2. Extension Relation Types 4.2. Extension Relation Types
Applications that don't merit a registered relation type may use an Applications that don't merit a registered relation type may use an
extension relation type. An extension relation type is a URI extension relation type, which is a URI [RFC3986] that uniquely
[RFC3986] that, when dereferenced, SHOULD yield a document describing identifies the relation type. Although the URI MAY point to a
that relation type. resource that contains a definition of the semantics of the relation
type, clients SHOULD NOT access that resource to avoid overburdening
its server.
Extension relation types MUST be compared in a case-sensitive When extension relation types are compared, they MUST be compared as
fashion, character-by-character. URIs in a case-sensitive fashion, character-by-character.
Note that while extension relation types are required to be URIs, but
a serialisation of links MAY specify that they are expressed in
another form, as long as they can be converted to URIs.
5. The Link Header Field 5. The Link Header Field
The Link entity-header field provides a means for conveying one or The Link entity-header field provides a means for serialising one or
more links in HTTP headers. It is semantically equivalent to the more links in HTTP headers. It is semantically equivalent to the
<LINK> element in HTML, as well as the atom:link feed-level element <LINK> element in HTML, as well as the atom:link feed-level element
in Atom [RFC4287]. in Atom [RFC4287].
Link = "Link" ":" #link-value Link = "Link" ":" #link-value
link-value = "<" URI-Reference ">" *( ";" link-param ) ) link-value = "<" URI-Reference ">" *( ";" link-param )
link-param = ( ( "rel" "=" relation-types ) link-param = ( ( "rel" "=" relation-types )
| ( "rev" "=" relation-types ) | ( "rev" "=" relation-types )
| ( "type" "=" type-name ) | ( "type" "=" type-name )
| ( "title" "=" quoted-string ) | ( "title" "=" quoted-string )
| ( "title*" "=" enc2231-string ) | ( "title*" "=" enc2231-string )
| ( "anchor" "=" <"> URI-Reference <"> ) | ( "anchor" "=" <"> URI-Reference <"> )
| ( link-extension ) ) | ( link-extension ) )
link-extension = token [ "=" ( token | quoted-string ) ] link-extension = token [ "=" ( token | quoted-string ) ]
enc2231-string = <extended-value, see <xref target="RFC2231"/>, enc2231-string = <extended-value, see [RFC2231], Section 7>
Section 7>
relation-types = relation-type | relation-types = relation-type |
<"> relation-type *( SP relation-type ) <"> <"> relation-type *( SP relation-type ) <">
relation-type = reg-relation-type | ext-relation-type relation-type = reg-relation-type | ext-relation-type
reg-relation-type = token reg-relation-type = token
ext-relation-type = URI ext-relation-type = URI
For example:
Link: <http://example.com/TheBook/chapter2>; rel="previous";
title="previous chapter"
indicates that chapter2 is previous to this resource in a logical
navigation path.
Each link-value conveys one target IRI as a URI-Reference (after Each link-value conveys one target IRI as a URI-Reference (after
conversion, if necessary) inside angle brackets ("<>"). If the URI- conversion to one, if necessary) inside angle brackets ("<>"). If
Reference is relative, it MUST be resolved as per [RFC3986]. Note the URI-Reference is relative, it MUST be resolved as per [RFC3986],
that any base IRI from the body's content is not applied. Section 5. Note that any base IRI from the body's content is not
applied.
By default, the context of a link conveyed in the Link header field By default, the context of a link conveyed in the Link header field
is the IRI associated with the representation it occurs in. When is the IRI of the requested resource. When present, the anchor
present, the anchor parameter overrides this with another URI, such parameter overrides this with another URI, such as a fragment of this
as a fragment of this resource, or a third resource (i.e., when the resource, or a third resource (i.e., when the anchor value is an
anchor value is an absolute URI). absolute URI). If the anchor parameter's value is a relative URI, it
MUST be resolved as per [RFC3986], Section 5. Note that any base URI
from the body's content is not applied.
Normally, the relation type of a link is conveyed in the "rel" Normally, the relation type of a link is conveyed in the "rel"
parameter's value. The "rev" parameter has also been used for this parameter's value. The "rev" parameter has also been used for this
purpose historically by some formats, and is included here for purpose historically by some formats, and is included here for
compatibility with those uses, but its use is not encouraged nor compatibility with those uses, but its use is not encouraged nor
defined by this specification. defined by this specification.
Note that extension relation types are REQUIRED to be absolute URIs Note that extension relation types are REQUIRED to be absolute URIs
in Link headers, and MUST be quoted if they contain a semicolon (";") in Link headers, and MUST be quoted if they contain a semicolon (";")
or comma (","). or comma (",").
The title parameter is used to label the destination of a link such The "title", "title*" and any link-extension link-params are
considered to be the target parameters for the link.
The "title" parameter is used to label the destination of a link such
that it can be used as a human-readable identifier (e.g. a menu that it can be used as a human-readable identifier (e.g. a menu
entry). The title* parameter MAY be used to instead to encode this entry). Alternately, the "title*" parameter MAY be used encode this
label in an alternate character set, and/or contain language label in a different character set, and/or contain language
information as per [RFC2231]. When using the enc2231-string syntax, information as per [RFC2231]. When using the enc2231-string syntax,
producers MUST NOT use a charset value other than 'ISO-8859-1' or producers MUST NOT use a charset value other than 'ISO-8859-1' or
'UTF-8'. 'UTF-8'.
5.1. Examples
NOTE: Non-ASCII characters used in prose for examples are encoded
using the format "Backslash-U with Delimiters", defined in Section
5.1 of [RFC5137].
For example:
Link: <http://example.com/TheBook/chapter2>; rel="previous";
title="previous chapter"
indicates that "chapter2" is previous to this resource in a logical
navigation path.
The example below shows an instance of the Link header encoding
multiple links, and also the use of RFC 2231 encoding to encode both
non-ASCII characters and language information.
Link: </TheBook/chapter2>;
rel="previous"; title*=UTF-8'de'letztes%20Kapitel",
</TheBook/chapter4>;
rel="next"; title*=UTF-8'de'n%c3%a4chstes%20Kapitel"
Here, the second link has a title encoded in UTF-8, uses the German
language ("de"), and contains the Unicode code point \u'00E4' ("LATIN
SMALL LETTER A WITH DIAERESIS").
Note that link-values may convey multiple links between the same Note that link-values may convey multiple links between the same
target and context IRIs; for example target and context IRIs; for example:
Link: <http://example.org/>; rel=index; Link: <http://example.org/>; rel=index;
rel="start http://example.net/relation/other" rel="start http://example.net/relation/other"
Here, the link to "http://example.org/" has the registered relation Here, the link to "http://example.org/" has the registered relation
types "index" and "start", and the extension relation type types "index" and "start", and the extension relation type
"http://example.net/relation/other". "http://example.net/relation/other".
6. IANA Considerations 6. IANA Considerations
skipping to change at page 8, line 7 skipping to change at page 9, line 8
The requirements for registered relation types are described in The requirements for registered relation types are described in
Section 4.1. Section 4.1.
Relation types may be registered on the advice of a Designated Expert Relation types may be registered on the advice of a Designated Expert
(appointed by the IESG or their delegate), with a Specification (appointed by the IESG or their delegate), with a Specification
Required (using terminology from [RFC5226]). Required (using terminology from [RFC5226]).
Registration requests consist of the completed registration template Registration requests consist of the completed registration template
below, typically published in an RFC or Open Standard (in the sense below, typically published in an RFC or Open Standard (in the sense
described by [RFC2026], section 7). However, to allow for the described by [RFC2026], Section 7). However, to allow for the
allocation of values prior to publication, the Designated Expert may allocation of values prior to publication, the Designated Expert may
approve registration once they are satisfied that an RFC (or other approve registration once they are satisfied that an RFC (or other
Open Standard) will be published. Open Standard) will be published.
The registration template is: The registration template is:
o Relation Name: o Relation Name:
o Description: o Description:
o Reference: o Reference:
skipping to change at page 9, line 35 skipping to change at page 10, line 37
o Reference: [RFC5023] o Reference: [RFC5023]
o Relation Name: enclosure o Relation Name: enclosure
o Description: Identifies a related resource that is potentially o Description: Identifies a related resource that is potentially
large and might require special handling. large and might require special handling.
o Reference: [RFC4287] o Reference: [RFC4287]
o Relation Name: first o Relation Name: first
o Description: An IRI that refers to the furthest preceding resource o Description: An IRI that refers to the furthest preceding resource
in a series of resources. in a series of resources.
o Reference: <http://www.iana.org/assignments/link-relations/first> o Reference: [this document]
o Relation Name: glossary o Relation Name: glossary
o Description: Refers to a glossary of terms. o Description: Refers to a glossary of terms.
o Reference: [W3C.REC-html401-19991224] o Reference: [W3C.REC-html401-19991224]
o Relation Name: help o Relation Name: help
o Description: Refers to a resource offering help (more information, o Description: Refers to a resource offering help (more information,
links to other sources information, etc.) links to other sources information, etc.)
o Reference: [W3C.REC-html401-19991224] o Reference: [W3C.REC-html401-19991224]
skipping to change at page 9, line 48 skipping to change at page 11, line 4
o Description: Refers to a glossary of terms. o Description: Refers to a glossary of terms.
o Reference: [W3C.REC-html401-19991224] o Reference: [W3C.REC-html401-19991224]
o Relation Name: help o Relation Name: help
o Description: Refers to a resource offering help (more information, o Description: Refers to a resource offering help (more information,
links to other sources information, etc.) links to other sources information, etc.)
o Reference: [W3C.REC-html401-19991224] o Reference: [W3C.REC-html401-19991224]
o Relation Name: index o Relation Name: index
o Description: Refers to an index. o Description: Refers to an index.
o Reference: [W3C.REC-html401-19991224] o Reference: [W3C.REC-html401-19991224]
o Relation Name: last o Relation Name: last
o Description: An IRI that refers to the furthest following resource o Description: An IRI that refers to the furthest following resource
in a series of resources. in a series of resources.
o Reference: <http://www.iana.org/assignments/link-relations/last> o Reference: [this document]
o Relation Name: license o Relation Name: license
o Description: Refers to a license associated with the link's o Description: Refers to a license associated with the link's
context. context.
o Reference: [RFC4946] o Reference: [RFC4946]
o Relation Name: next o Relation Name: next
o Description: Refers to the next resource in a ordered series of o Description: Refers to the next resource in a ordered series of
resources. resources.
o Reference: [W3C.REC-html401-19991224] o Reference: [W3C.REC-html401-19991224]
o Relation Name: next-archive o Relation Name: next-archive
o Description: Refers to the immediately following archive resource. o Description: Refers to the immediately following archive resource.
o Reference: [RFC5005] o Reference: [RFC5005]
o Relation Name: payment o Relation Name: payment
o Description: indicates a resource where payment is accepted. o Description: indicates a resource where payment is accepted.
o Reference: o Reference: [this document]
<http://www.iana.org/assignments/link-relations/payment>
o Relation Name: prev o Relation Name: prev
o Description: Refers to the previous resource in an ordered series o Description: Refers to the previous resource in an ordered series
of resources. Synonym for "previous". of resources. Synonym for "previous".
o Reference: [W3C.REC-html401-19991224] o Reference: [W3C.REC-html401-19991224]
o Relation Name: previous o Relation Name: previous
o Description: Refers to the previous resource in an ordered series o Description: Refers to the previous resource in an ordered series
of resources. Synonym for "prev". of resources. Synonym for "prev".
o Reference: [W3C.REC-html401-19991224] o Reference: [W3C.REC-html401-19991224]
skipping to change at page 11, line 45 skipping to change at page 12, line 48
it. it.
Applications that take advantage of typed links should consider the Applications that take advantage of typed links should consider the
attack vectors opened by automatically following, trusting, or attack vectors opened by automatically following, trusting, or
otherwise using links gathered from HTTP headers. In particular, otherwise using links gathered from HTTP headers. In particular,
Link headers that use the "anchor" parameter to associate a link's Link headers that use the "anchor" parameter to associate a link's
context with another resource should be treated with due caution. context with another resource should be treated with due caution.
8. Internationalisation Considerations 8. Internationalisation Considerations
Target IRIs may need to be converted to URIs in order to serialise Target IRIs may need to be converted to URIs in order to express them
them in applications that do not support IRIs. This includes the in serialisations that do not support IRIs. This includes the Link
Link HTTP header. HTTP header.
Similarly, the anchor parameter of the Link header does not support Similarly, the anchor parameter of the Link header does not support
IRIs, and therefore IRIs must be converted to URIs before inclusion IRIs, and therefore IRIs must be converted to URIs before inclusion
there. there.
Relation types are defined as URIs, not IRIs, to aid in their Relation types are defined as URIs, not IRIs, to aid in their
comparison. It is not expected that they will be displayed to end comparison. It is not expected that they will be displayed to end
users. users.
9. References 9. References
skipping to change at page 13, line 20 skipping to change at page 14, line 25
September 2006. September 2006.
[RFC4946] Snell, J., "Atom License Extension", RFC 4946, July 2007. [RFC4946] Snell, J., "Atom License Extension", RFC 4946, July 2007.
[RFC5005] Nottingham, M., "Feed Paging and Archiving", RFC 5005, [RFC5005] Nottingham, M., "Feed Paging and Archiving", RFC 5005,
September 2007. September 2007.
[RFC5023] Gregorio, J. and B. de hOra, "The Atom Publishing [RFC5023] Gregorio, J. and B. de hOra, "The Atom Publishing
Protocol", RFC 5023, October 2007. Protocol", RFC 5023, October 2007.
[RFC5137] Klensin, J., "ASCII Escaping of Unicode Characters",
BCP 137, RFC 5137, February 2008.
[W3C.REC-html401-19991224] [W3C.REC-html401-19991224]
Raggett, D., Hors, A., and I. Jacobs, "HTML 4.01 Raggett, D., Hors, A., and I. Jacobs, "HTML 4.01
Specification", W3C REC REC-html401-19991224, Specification", W3C REC REC-html401-19991224,
December 1999. December 1999.
Appendix A. Notes on Using the Link Header with HTML4 Appendix A. Notes on Using the Link Header with HTML4
HTML motivated the original syntax of the Link header, and many of HTML motivated the original syntax of the Link header, and many of
the design decisions in this document are driven by a desire to stay the design decisions in this document are driven by a desire to stay
compatible with these uses. compatible with these uses.
In HTML4, the link element can be mapped to links as specified here In HTML4, the link element can be mapped to links as specified here
by using the "href" attribute for the target URI, and "rel" to convey by using the "href" attribute for the target URI, and "rel" to convey
both the relation type, as in the Link header. The context of the the relation type, as in the Link header. The context of the link is
link is the URI associated with the entire HTML document. the URI associated with the entire HTML document.
HTML4 also has a "rev" parameter for links that allows a link's HTML4 also has a "rev" parameter for links that allows a link's
relation to be reversed. The Link header has a "rev" parameter to relation to be reversed. The Link header has a "rev" parameter to
allow the expression of these links in HTTP headers, but its use is allow the expression of these links in HTTP headers, but its use is
not encouraged, due to the confusion this mechanism causes as well as not encouraged, due to the confusion this mechanism causes as well as
conflicting interpretations among HTML versions. conflicting interpretations among HTML versions.
All of the link relations defined by HTML4 have been included in the All of the link relations defined by HTML4 have been included in the
link relation registry, so they can be used without modification. link relation registry, so they can be used without modification.
However, extension link relations work differently in HTML4 and the However, extension link relations work differently in HTML4 and the
Link header; the former uses a document-wide "profile" URI to scope Link header; the former uses a document-wide "profile" URI to scope
the relations, while the latter allows the use of full URIs on the relations, while the latter allows the use of full URIs on
individual relations. individual relations.
Therefore, when using the profile mechanism in HTML4, it is necessary Therefore, when using the profile mechanism in HTML4, it is necessary
to map the profiled link relations to URIs when expressed in Link to map the profiled link relations to URIs when expressed in Link
headers. For example, in HTML: headers. For example, in HTML:
<html> <html>
skipping to change at page 14, line 31 skipping to change at page 15, line 39
relation types that are not URIs are (perhaps inevitably) common. relation types that are not URIs are (perhaps inevitably) common.
Consuming HTML implementations should not consider such unregistered Consuming HTML implementations should not consider such unregistered
short links to be errors, but rather relation types with a local short links to be errors, but rather relation types with a local
scope (i.e., their meaning is specific and perhaps private to that scope (i.e., their meaning is specific and perhaps private to that
document). document).
HTML4 also defines several attributes on links that are not HTML4 also defines several attributes on links that are not
explicitly defined by the Link header. These attributes can be explicitly defined by the Link header. These attributes can be
serialised as link-extensions to maintain fidelity. serialised as link-extensions to maintain fidelity.
Finally, the HTML4 specification gives a special meaning when the
"alternate" and "stylesheet" relations coincide in the same link.
Such links should be serialised in the Link header using a single
list of relation-types (e.g., rel="alternate stylesheet") to preserve
this relationship.
Appendix B. Notes on Using the Link Header with Atom Appendix B. Notes on Using the Link Header with Atom
Atom conveys links in the atom:link element, with the "href" Atom conveys links in the atom:link element, with the "href"
attribute indicating the target IRI and the "rel" attribute attribute indicating the target IRI and the "rel" attribute
containing the relation type. The context of the link is either a containing the relation type. The context of the link is either a
feed IRI or an entry ID, depending on where it appears; generally, feed IRI or an entry ID, depending on where it appears; generally,
feed-level links are candidates for transmission as a Link header. feed-level links are candidates for transmission as a Link header.
When serialising an atom:link into a Link header, it is necessary to When serialising an atom:link into a Link header, it is necessary to
convert target IRIs (if used) to URIs. convert target IRIs (if used) to URIs.
skipping to change at page 15, line 14 skipping to change at page 16, line 27
that they are not mistaken for extension relation types. that they are not mistaken for extension relation types.
Note also that while the Link header allows multiple relations to be Note also that while the Link header allows multiple relations to be
associated with a single link, atom:link does not. In this case, a associated with a single link, atom:link does not. In this case, a
single link-value may map to several atom:link elements. single link-value may map to several atom:link elements.
As with HTML, atom:link defines some attributes that are not As with HTML, atom:link defines some attributes that are not
explicitly mirrored in the Link header syntax, but they may also be explicitly mirrored in the Link header syntax, but they may also be
used as link-extensions. used as link-extensions.
Appendix C. Acknowledgements Appendix C. Defining New Link Serialisations
New serialisations of links (as defined by this specification) need
to address several issues, including:
o Specific syntax for each component of the link model described in
Section 3.
o What target attributes, if any, are defined by the serialisation.
o How to determine the context of the link.
o How to differentiate registered link relations from extension link
relations (if the latter are serialised as URIs, this is
relatively straightforward).
Appendix D. Acknowledgements
This specification lifts the idea and definition for the Link header This specification lifts the idea and definition for the Link header
from RFC2068; credit for it belongs entirely to the authors of and from RFC2068; credit for it belongs entirely to the authors of and
contributors to that document. The link relation registrations contributors to that document. The link relation registrations
themselves are sourced from several documents; see the applicable themselves are sourced from several documents; see the applicable
references. references.
The author would like to thank the many people who commented upon, The author would like to thank the many people who commented upon,
encouraged and gave feedback to this draft, especially including encouraged and gave feedback to this draft, especially including
Frank Ellermann, Roy Fielding and Julian Reschke. Frank Ellermann, Roy Fielding and Julian Reschke.
Appendix D. Document history Appendix E. Document history
[[ to be removed by the RFC editor before publication as an RFC. ]] [[ to be removed by the RFC editor before publication as an RFC. ]]
-05
o Clarified how to resolve relative URIs in the 'anchor' parameter.
o Tweaked language about dereferencing relation type URIs.
o Separated out examples.
o Made target-parameters more explicit in the model.
o Discourage special semantics between different relations, or based
upon cardinality.
o Grandfathered in special semantics of 'alternate stylesheet' for
HTML4.
o Note that extension types can be serialised in ways other than as
URIs, as long as they can be converted to URIs.
o Change default context of a link header to that of the requested
resource.
o Use this document as reference for relations that don't have a
formal definition other than the registry entries; avoids circular
references.
o Noted that ordering of links is not significant or defined in this
spec, but may be in specific applications.
o Adjusted uses of 'application' to 'serialisation' where
appropriate.
o Added 'Defining New Link Serialisations' section.
-04 -04
o Defined context as a resource, rather than a representation. o Defined context as a resource, rather than a representation.
o Removed concept of link directionality; relegated to a deprecated o Removed concept of link directionality; relegated to a deprecated
Link header extension. Link header extension.
o Relation types split into registered (non-URI) and extension o Relation types split into registered (non-URI) and extension
(URI). (URI).
o Changed wording around finding URIs for registered relation types. o Changed wording around finding URIs for registered relation types.
o Changed target and context URIs to IRIs (but not extension o Changed target and context URIs to IRIs (but not extension
relation types). relation types).
 End of changes. 43 change blocks. 
87 lines changed or deleted 186 lines changed or added

This html diff was produced by rfcdiff 1.34. The latest version is available from http://tools.ietf.org/tools/rfcdiff/