summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc9652.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc9652.txt')
-rw-r--r--doc/rfc/rfc9652.txt247
1 files changed, 247 insertions, 0 deletions
diff --git a/doc/rfc/rfc9652.txt b/doc/rfc/rfc9652.txt
new file mode 100644
index 0000000..1dc6bf1
--- /dev/null
+++ b/doc/rfc/rfc9652.txt
@@ -0,0 +1,247 @@
+
+
+
+
+Internet Engineering Task Force (IETF) M. Nottingham
+Request for Comments: 9652 September 2024
+Category: Standards Track
+ISSN: 2070-1721
+
+
+ The Link-Template HTTP Header Field
+
+Abstract
+
+ This specification defines the Link-Template HTTP header field,
+ providing a means for describing the structure of a link between two
+ resources so that new links can be generated.
+
+Status of This Memo
+
+ This is an Internet Standards Track document.
+
+ This document is a product of the Internet Engineering Task Force
+ (IETF). It represents the consensus of the IETF community. It has
+ received public review and has been approved for publication by the
+ Internet Engineering Steering Group (IESG). Further information on
+ Internet Standards is available in Section 2 of RFC 7841.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ https://www.rfc-editor.org/info/rfc9652.
+
+Copyright Notice
+
+ Copyright (c) 2024 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (https://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Revised BSD License text as described in Section 4.e of the
+ Trust Legal Provisions and are provided without warranty as described
+ in the Revised BSD License.
+
+Table of Contents
+
+ 1. Introduction
+ 1.1. Notational Conventions
+ 2. The Link-Template Header Field
+ 2.1. The 'var-base' Parameter
+ 3. Security Considerations
+ 4. IANA Considerations
+ 5. Normative References
+ Author's Address
+
+1. Introduction
+
+ [URI-TEMPLATE] defines a syntax for templates that, when expanded
+ using a set of variables, results in a URI [URI].
+
+ This specification defines a HTTP header field [HTTP] for conveying
+ templates for links in the headers of a HTTP message. It is
+ complimentary to the Link header field defined in Section 3 of
+ [WEB-LINKING], which carries links directly.
+
+1.1. Notational Conventions
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
+ "OPTIONAL" in this document are to be interpreted as described in
+ BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
+ capitals, as shown here.
+
+ This specification uses the following terms from [STRUCTURED-FIELDS]:
+ List, String, Display String, and Parameter.
+
+2. The Link-Template Header Field
+
+ The Link-Template header field is a Structured Field
+ [STRUCTURED-FIELDS] that serializes one or more links into HTTP
+ message metadata. It is semantically equivalent to the Link header
+ field defined in Section 3 of [WEB-LINKING], except that the link
+ target and link anchor can contain URI Templates [URI-TEMPLATE].
+
+ The Link-template header field's value is a List of Strings (see
+ [STRUCTURED-FIELDS]). Each String contains a URI Template and can
+ have Parameters that carry metadata associated with that template.
+
+ For example:
+
+ Link-Template: "/{username}"; rel="item"
+
+ indicates that a resource with the relation type "item" for a given
+ "username" can be found by expanding the "username" variable into the
+ template given.
+
+ The link target (see Section 2 of [WEB-LINKING]) is determined by
+ expanding the template and converting it to an absolute URI (if
+ necessary).
+
+ The link context and link relation type for the link (as defined in
+ Section 2 of [WEB-LINKING]) are conveyed using the 'anchor' and 'rel'
+ Parameters, as they are for the Link header field in Section 3 of
+ [WEB-LINKING]. Their values MUST be Strings.
+
+ However, the 'anchor' Parameter MAY contain a URI Template. For
+ example:
+
+ Link-Template: "/books/{book_id}/author";
+ rel="author"; anchor="#{book_id}"
+
+ Here, the link to the author for a particular book in a list of books
+ can be found by following the link template.
+
+ This specification defines additional semantics for the 'var-base'
+ Parameter on templated links; see Section 2.1.
+
+ The link's target attributes (as defined in Section 2.2 of
+ [WEB-LINKING]) are conveyed using other Parameters, in a manner
+ similar to the Link header field. These Parameter values MUST be
+ Strings, unless they contain non-ASCII characters, in which case they
+ MUST be Display Strings. Note that some target attribute names will
+ not serialize as Structured Field Parameter keys (see Section 3.1.2
+ of [STRUCTURED-FIELDS]).
+
+ For example:
+
+ Link-Template: "/author"; rel="author";
+ title=%"Bj%c3%b6rn J%c3%a4rnsida"
+
+ Implementations MUST support all levels of template defined by
+ [URI-TEMPLATE] in the link String and the 'anchor' Parameter.
+
+2.1. The 'var-base' Parameter
+
+ When a templated link has a 'var-base' Parameter, its value conveys a
+ URI-reference that is used as a base URI for the variable names in
+ the URI Template. This allows template variables to be globally
+ identified, rather than specific to the context of use.
+
+ Dereferencing the URI for a particular variable might lead to more
+ information about the syntax or semantics of that variable;
+ specification of particular formats for this information is out of
+ scope for this document.
+
+ To determine the URI for a given variable, the value given is used as
+ a base URI in reference resolution (as specified in [URI]). If the
+ resulting URI is still relative, the context of the link is used as
+ the base URI in a further resolution; see [WEB-LINKING].
+
+ For example:
+
+ Link-Template: "/widgets/{widget_id}";
+ rel="https://example.org/rel/widget";
+ var-base="https://example.org/vars/"
+
+ indicates that a resource with the relation type
+ "https://example.org/rel/widget" can be found by expanding the
+ "https://example.org/vars/widget_id" variable into the template
+ given.
+
+ If the current context of the message that the header appears within
+ is "https://example.org/", the same information could be conveyed by
+ this header field:
+
+ Link-Template: "/widgets/{widget_id}";
+ rel="https://example.org/rel/widget";
+ var-base="/vars/"
+
+3. Security Considerations
+
+ The security considerations for the Link header field in
+ [WEB-LINKING] and those for URI Templates [URI-TEMPLATE] apply.
+
+ Target attributes that are conveyed via Display Strings can be
+ vulnerable to a wide variety of attacks. See [UNICODE-SECURITY] for
+ advice regarding their handling. Specific advice is not given by
+ this specification since there are a variety of potential use cases
+ for such attributes.
+
+4. IANA Considerations
+
+ This specification enters the "Link-Template" field name into the
+ "Hypertext Transfer Protocol (HTTP) Field Name Registry".
+
+ +===============+===========+===============+
+ | Field Name | Status | Reference |
+ +===============+===========+===============+
+ | Link-Template | Permanent | This document |
+ +---------------+-----------+---------------+
+
+ Table 1
+
+5. Normative References
+
+ [HTTP] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke,
+ Ed., "HTTP Semantics", STD 97, RFC 9110,
+ DOI 10.17487/RFC9110, June 2022,
+ <https://www.rfc-editor.org/info/rfc9110>.
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119,
+ DOI 10.17487/RFC2119, March 1997,
+ <https://www.rfc-editor.org/info/rfc2119>.
+
+ [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
+ 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
+ May 2017, <https://www.rfc-editor.org/info/rfc8174>.
+
+ [STRUCTURED-FIELDS]
+ Nottingham, M. and P-H. Kamp, "Structured Field Values for
+ HTTP", RFC 9651, DOI 10.17487/RFC9651, September 2024,
+ <https://www.rfc-editor.org/info/rfc9651>.
+
+ [UNICODE-SECURITY]
+ Davis, M. and M. Suignard, "Unicode Security
+ Considerations", Unicode Technical Report #16, 19
+ September 2014, <https://www.unicode.org/reports/tr36/>.
+ Latest version available at
+ <https://www.unicode.org/reports/tr36/>.
+
+ [URI] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
+ Resource Identifier (URI): Generic Syntax", STD 66,
+ RFC 3986, DOI 10.17487/RFC3986, January 2005,
+ <https://www.rfc-editor.org/info/rfc3986>.
+
+ [URI-TEMPLATE]
+ Gregorio, J., Fielding, R., Hadley, M., Nottingham, M.,
+ and D. Orchard, "URI Template", RFC 6570,
+ DOI 10.17487/RFC6570, March 2012,
+ <https://www.rfc-editor.org/info/rfc6570>.
+
+ [WEB-LINKING]
+ Nottingham, M., "Web Linking", RFC 8288,
+ DOI 10.17487/RFC8288, October 2017,
+ <https://www.rfc-editor.org/info/rfc8288>.
+
+Author's Address
+
+ Mark Nottingham
+ Prahran
+ Australia
+ Email: mnot@mnot.net
+ URI: https://www.mnot.net/