initial release
[squeep-web-linking] / reference / rfc8288.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4 <head profile="http://dublincore.org/documents/2008/08/04/dc-html/">
5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6 <meta name="robots" content="index,follow" />
7 <meta name="creator" content="rfcmarkup version 1.129d on tools.ietf.org" />
8 <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
9 <meta name="DC.Relation.Replaces" content="rfc5988" />
10 <meta name="DC.Identifier" content="urn:ietf:rfc:8288" />
11 <meta name="DC.Date.Issued" content="October, 2017" />
12 <meta name="DC.Creator" content="Mark Nottingham &lt;mnot@mnot.net&gt;" />
13 <meta name="DC.Description.Abstract" content="This specification defines a model for the relationships between
14 resources on the Web (&quot;links&quot;) and the type of those relationships
15 (&quot;link relation types&quot;). It also defines the serialisation of such
16 links in HTTP headers with the Link header field." />
17 <meta name="DC.Title" content="Web Linking" />
18
19 <link rel="icon" href="/images/rfc.png" type="image/png" />
20 <link rel="shortcut icon" href="/images/rfc.png" type="image/png" />
21 <title>RFC 8288 - Web Linking</title>
22
23
24 <style type="text/css">
25 @media only screen
26 and (min-width: 992px)
27 and (max-width: 1199px) {
28 body { font-size: 14pt; }
29 div.content { width: 96ex; margin: 0 auto; }
30 }
31 @media only screen
32 and (min-width: 768px)
33 and (max-width: 991px) {
34 body { font-size: 14pt; }
35 div.content { width: 96ex; margin: 0 auto; }
36 }
37 @media only screen
38 and (min-width: 480px)
39 and (max-width: 767px) {
40 body { font-size: 11pt; }
41 div.content { width: 96ex; margin: 0 auto; }
42 }
43 @media only screen
44 and (max-width: 479px) {
45 body { font-size: 8pt; }
46 div.content { width: 96ex; margin: 0 auto; }
47 }
48 @media only screen
49 and (min-device-width : 375px)
50 and (max-device-width : 667px) {
51 body { font-size: 9.5pt; }
52 div.content { width: 96ex; margin: 0; }
53 }
54 @media only screen
55 and (min-device-width: 1200px) {
56 body { font-size: 10pt; margin: 0 4em; }
57 div.content { width: 96ex; margin: 0; }
58 }
59 h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {
60 font-weight: bold;
61 /* line-height: 0pt; */
62 display: inline;
63 white-space: pre;
64 font-family: monospace;
65 font-size: 1em;
66 font-weight: bold;
67 }
68 pre {
69 font-size: 1em;
70 margin-top: 0px;
71 margin-bottom: 0px;
72 }
73 .pre {
74 white-space: pre;
75 font-family: monospace;
76 }
77 .header{
78 font-weight: bold;
79 }
80 .newpage {
81 page-break-before: always;
82 }
83 .invisible {
84 text-decoration: none;
85 color: white;
86 }
87 a.selflink {
88 color: black;
89 text-decoration: none;
90 }
91 @media print {
92 body {
93 font-family: monospace;
94 font-size: 10.5pt;
95 }
96 h1, h2, h3, h4, h5, h6 {
97 font-size: 1em;
98 }
99
100 a:link, a:visited {
101 color: inherit;
102 text-decoration: none;
103 }
104 .noprint {
105 display: none;
106 }
107 }
108 @media screen {
109 .grey, .grey a:link, .grey a:visited {
110 color: #777;
111 }
112 .docinfo {
113 background-color: #EEE;
114 }
115 .top {
116 border-top: 7px solid #EEE;
117 }
118 .pad {
119 padding-top: 7px;
120 line-height: 24px;
121 padding-bottom: 4px;
122 }
123 .bgwhite { background-color: white; }
124 .bgred { background-color: #F44; }
125 .bggrey { background-color: #666; }
126 .bgbrown { background-color: #840; }
127 .bgorange { background-color: #FA0; }
128 .bgyellow { background-color: #EE0; }
129 .bgmagenta{ background-color: #F4F; }
130 .bgblue { background-color: #66F; }
131 .bgcyan { background-color: #4DD; }
132 .bggreen { background-color: #4F4; }
133
134 .legend { font-size: 90%; }
135 .cplate { font-size: 70%; border: solid grey 1px; }
136 }
137 </style>
138 <!--[if IE]>
139 <style>
140 body {
141 font-size: 13px;
142 margin: 10px 10px;
143 }
144 </style>
145 <![endif]-->
146
147 <script type="text/javascript"><!--
148 function addHeaderTags() {
149 var spans = document.getElementsByTagName("span");
150 for (var i=0; i < spans.length; i++) {
151 var elem = spans[i];
152 if (elem) {
153 var level = elem.getAttribute("class");
154 if (level == "h1" || level == "h2" || level == "h3" || level == "h4" || level == "h5" || level == "h6") {
155 elem.innerHTML = "<"+level+">"+elem.innerHTML+"</"+level+">";
156 }
157 }
158 }
159 }
160 var legend_html = "Colour legend:<br /> <table> <tr><td>Unknown:</td> <td><span class='cplate bgwhite'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Draft:</td> <td><span class='cplate bgred'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Informational:</td> <td><span class='cplate bgorange'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Experimental:</td> <td><span class='cplate bgyellow'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Best Common Practice:</td> <td><span class='cplate bgmagenta'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Proposed Standard:</td> <td><span class='cplate bgblue'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Draft Standard (old designation):</td> <td><span class='cplate bgcyan'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Internet Standard:</td> <td><span class='cplate bggreen'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Historic:</td> <td><span class='cplate bggrey'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Obsolete:</td> <td><span class='cplate bgbrown'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> </table>";
161 function showElem(id) {
162 var elem = document.getElementById(id);
163 elem.innerHTML = eval(id+"_html");
164 elem.style.visibility='visible';
165 }
166 function hideElem(id) {
167 var elem = document.getElementById(id);
168 elem.style.visibility='hidden';
169 elem.innerHTML = "";
170 }
171 // -->
172 </script>
173 </head>
174 <body onload="addHeaderTags()">
175 <div class="content">
176 <div style="height: 13px;">
177 <div onmouseover="this.style.cursor='pointer';"
178 onclick="showElem('legend');"
179 onmouseout="hideElem('legend')"
180 style="height: 6px; position: absolute;"
181 class="pre noprint docinfo bgblue"
182 title="Click for colour legend." > </div>
183 <div id="legend"
184 class="docinfo noprint pre legend"
185 style="position:absolute; top: 4px; left: 4ex; visibility:hidden; background-color: white; padding: 4px 9px 5px 7px; border: solid #345 1px; "
186 onmouseover="showElem('legend');"
187 onmouseout="hideElem('legend');">
188 </div>
189 </div>
190 <span class="pre noprint docinfo top">[<a href="../html/" title="Document search and retrieval page">Docs</a>] [<a href="/rfc/rfc8288.txt" title="Plaintext version of this document">txt</a>|<a href="/pdf/rfc8288" title="PDF version of this document">pdf</a>] [<a href="./draft-nottingham-rfc5988bis" title="draft-nottingham-rfc5988bis">draft-nottingha...</a>] [<a href='https://datatracker.ietf.org/doc/rfc8288' title='IESG Datatracker information for this document'>Tracker</a>] [<a href="/rfcdiff?difftype=--hwdiff&amp;url2=rfc8288" title="Inline diff (wdiff)">Diff1</a>] [<a href="/rfcdiff?url2=rfc8288" title="Side-by-side diff">Diff2</a>] [<a href="https://www.rfc-editor.org/errata_search.php?rfc=8288">Errata</a>]</span><br />
191 <span class="pre noprint docinfo"> </span><br />
192 <span class="pre noprint docinfo"> PROPOSED STANDARD</span><br />
193 <span class="pre noprint docinfo"> <span style='color: #C00;'>Errata Exist</span></span><br />
194 <pre>
195 Internet Engineering Task Force (IETF) M. Nottingham
196 Request for Comments: 8288 October 2017
197 Obsoletes: <a href="./rfc5988">5988</a>
198 Category: Standards Track
199 ISSN: 2070-1721
200
201
202 <span class="h1">Web Linking</span>
203
204 Abstract
205
206 This specification defines a model for the relationships between
207 resources on the Web ("links") and the type of those relationships
208 ("link relation types").
209
210 It also defines the serialisation of such links in HTTP headers with
211 the Link header field.
212
213 Status of This Memo
214
215 This is an Internet Standards Track document.
216
217 This document is a product of the Internet Engineering Task Force
218 (IETF). It represents the consensus of the IETF community. It has
219 received public review and has been approved for publication by the
220 Internet Engineering Steering Group (IESG). Further information on
221 Internet Standards is available in <a href="./rfc7841#section-2">Section&nbsp;2 of RFC 7841</a>.
222
223 Information about the current status of this document, any errata,
224 and how to provide feedback on it may be obtained at
225 <a href="https://www.rfc-editor.org/info/rfc8288">https://www.rfc-editor.org/info/rfc8288</a>.
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246 <span class="grey">Nottingham Standards Track [Page 1]</span></pre>
247 <hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-2" id="page-2" href="#page-2" class="invisible"> </a>
248 <span class="grey"><a href="./rfc8288">RFC 8288</a> Web Linking October 2017</span>
249
250
251 Copyright Notice
252
253 Copyright (c) 2017 IETF Trust and the persons identified as the
254 document authors. All rights reserved.
255
256 This document is subject to <a href="./bcp78">BCP 78</a> and the IETF Trust's Legal
257 Provisions Relating to IETF Documents
258 (<a href="https://trustee.ietf.org/license-info">https://trustee.ietf.org/license-info</a>) in effect on the date of
259 publication of this document. Please review these documents
260 carefully, as they describe your rights and restrictions with respect
261 to this document. Code Components extracted from this document must
262 include Simplified BSD License text as described in Section 4.e of
263 the Trust Legal Provisions and are provided without warranty as
264 described in the Simplified BSD License.
265
266 This document may contain material from IETF Documents or IETF
267 Contributions published or made publicly available before November
268 10, 2008. The person(s) controlling the copyright in some of this
269 material may not have granted the IETF Trust the right to allow
270 modifications of such material outside the IETF Standards Process.
271 Without obtaining an adequate license from the person(s) controlling
272 the copyright in such materials, this document may not be modified
273 outside the IETF Standards Process, and derivative works of it may
274 not be created outside the IETF Standards Process, except to format
275 it for publication as an RFC or to translate it into languages other
276 than English.
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302 <span class="grey">Nottingham Standards Track [Page 2]</span></pre>
303 <hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-3" id="page-3" href="#page-3" class="invisible"> </a>
304 <span class="grey"><a href="./rfc8288">RFC 8288</a> Web Linking October 2017</span>
305
306
307 Table of Contents
308
309 <a href="#section-1">1</a>. Introduction . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-4">4</a>
310 <a href="#section-1.1">1.1</a>. Notational Conventions . . . . . . . . . . . . . . . . . <a href="#page-4">4</a>
311 <a href="#section-1.2">1.2</a>. Conformance and Error Handling . . . . . . . . . . . . . <a href="#page-4">4</a>
312 <a href="#section-2">2</a>. Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-6">6</a>
313 <a href="#section-2.1">2.1</a>. Link Relation Types . . . . . . . . . . . . . . . . . . . <a href="#page-6">6</a>
314 <a href="#section-2.1.1">2.1.1</a>. Registered Relation Types . . . . . . . . . . . . . . <a href="#page-6">6</a>
315 <a href="#section-2.1.2">2.1.2</a>. Extension Relation Types . . . . . . . . . . . . . . <a href="#page-8">8</a>
316 <a href="#section-2.2">2.2</a>. Target Attributes . . . . . . . . . . . . . . . . . . . . <a href="#page-9">9</a>
317 <a href="#section-3">3</a>. Link Serialisation in HTTP Headers . . . . . . . . . . . . . <a href="#page-9">9</a>
318 <a href="#section-3.1">3.1</a>. Link Target . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-10">10</a>
319 <a href="#section-3.2">3.2</a>. Link Context . . . . . . . . . . . . . . . . . . . . . . <a href="#page-10">10</a>
320 <a href="#section-3.3">3.3</a>. Relation Type . . . . . . . . . . . . . . . . . . . . . . <a href="#page-11">11</a>
321 <a href="#section-3.4">3.4</a>. Target Attributes . . . . . . . . . . . . . . . . . . . . <a href="#page-11">11</a>
322 <a href="#section-3.4.1">3.4.1</a>. Serialisation-Defined Attributes . . . . . . . . . . <a href="#page-11">11</a>
323 <a href="#section-3.4.2">3.4.2</a>. Extension Attributes . . . . . . . . . . . . . . . . <a href="#page-13">13</a>
324 <a href="#section-3.5">3.5</a>. Link Header Field Examples . . . . . . . . . . . . . . . <a href="#page-13">13</a>
325 <a href="#section-4">4</a>. IANA Considerations . . . . . . . . . . . . . . . . . . . . . <a href="#page-14">14</a>
326 <a href="#section-4.1">4.1</a>. Link HTTP Header Field Registration . . . . . . . . . . . <a href="#page-14">14</a>
327 <a href="#section-4.2">4.2</a>. Link Relation Type Registry . . . . . . . . . . . . . . . <a href="#page-14">14</a>
328 <a href="#section-4.3">4.3</a>. Link Relation Application Data Registry . . . . . . . . . <a href="#page-15">15</a>
329 <a href="#section-5">5</a>. Security Considerations . . . . . . . . . . . . . . . . . . . <a href="#page-15">15</a>
330 <a href="#section-6">6</a>. Internationalisation Considerations . . . . . . . . . . . . . <a href="#page-16">16</a>
331 <a href="#section-7">7</a>. References . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-16">16</a>
332 <a href="#section-7.1">7.1</a>. Normative References . . . . . . . . . . . . . . . . . . <a href="#page-16">16</a>
333 <a href="#section-7.2">7.2</a>. Informative References . . . . . . . . . . . . . . . . . <a href="#page-17">17</a>
334 <a href="#appendix-A">Appendix A</a>. Notes on Other Link Serialisations . . . . . . . . . <a href="#page-19">19</a>
335 <a href="#appendix-A.1">A.1</a>. Link Serialisation in HTML . . . . . . . . . . . . . . . <a href="#page-19">19</a>
336 <a href="#appendix-A.2">A.2</a>. Link Serialisation in Atom . . . . . . . . . . . . . . . <a href="#page-19">19</a>
337 <a href="#appendix-B">Appendix B</a>. Algorithms for Parsing Link Header Fields . . . . . <a href="#page-20">20</a>
338 <a href="#appendix-B.1">B.1</a>. Parsing a Header Set for Links . . . . . . . . . . . . . <a href="#page-20">20</a>
339 <a href="#appendix-B.2">B.2</a>. Parsing a Link Field Value . . . . . . . . . . . . . . . <a href="#page-21">21</a>
340 <a href="#appendix-B.3">B.3</a>. Parsing Parameters . . . . . . . . . . . . . . . . . . . <a href="#page-22">22</a>
341 <a href="#appendix-B.4">B.4</a>. Parsing a Quoted String . . . . . . . . . . . . . . . . . <a href="#page-23">23</a>
342 <a href="#appendix-C">Appendix C</a>. Changes from <a href="./rfc5988">RFC 5988</a> . . . . . . . . . . . . . . . <a href="#page-24">24</a>
343 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-24">24</a>
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358 <span class="grey">Nottingham Standards Track [Page 3]</span></pre>
359 <hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-4" id="page-4" href="#page-4" class="invisible"> </a>
360 <span class="grey"><a href="./rfc8288">RFC 8288</a> Web Linking October 2017</span>
361
362
363 <span class="h2"><a class="selflink" name="section-1" href="#section-1">1</a>. Introduction</span>
364
365 This specification defines a model for the relationships between
366 resources on the Web ("links") and the type of those relationships
367 ("link relation types").
368
369 HTML [<a href="#ref-W3C.REC-html5-20141028" title="&quot;HTML5&quot;">W3C.REC-html5-20141028</a>] and Atom [<a href="./rfc4287" title="&quot;The Atom Syndication Format&quot;">RFC4287</a>] both have well-
370 defined concepts of linking; <a href="#section-2">Section 2</a> generalises this into a
371 framework that encompasses linking in these formats and (potentially)
372 elsewhere.
373
374 Furthermore, <a href="#section-3">Section 3</a> defines an HTTP header field for conveying
375 such links.
376
377 <span class="h3"><a class="selflink" name="section-1.1" href="#section-1.1">1.1</a>. Notational Conventions</span>
378
379 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
380 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
381 "OPTIONAL" in this document are to be interpreted as described in <a href="./bcp14">BCP</a>
382 <a href="./bcp14">14</a> [<a href="./rfc2119" title="&quot;Key words for use in RFCs to Indicate Requirement Levels&quot;">RFC2119</a>] [<a href="./rfc8174" title="&quot;Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words&quot;">RFC8174</a>] when, and only when, they appear in all
383 capitals, as shown here.
384
385 This document uses the Augmented Backus-Naur Form (ABNF) [<a href="./rfc5234" title="&quot;Augmented BNF for Syntax Specifications: ABNF&quot;">RFC5234</a>]
386 notation of [<a href="./rfc7230" title="&quot;Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing&quot;">RFC7230</a>], including the #rule, and explicitly includes
387 the following rules from it: quoted-string, token, SP (space), BWS
388 (bad whitespace), OWS (optional whitespace), RWS (required
389 whitespace), LOALPHA, DIGIT.
390
391 Additionally, the following rules are included:
392
393 o URI and URI-Reference from [<a href="./rfc3986" title="&quot;Uniform Resource Identifier (URI): Generic Syntax&quot;">RFC3986</a>],
394 o type-name and subtype-name from [<a href="./rfc6838" title="&quot;Media Type Specifications and Registration Procedures&quot;">RFC6838</a>],
395 o media-query-list from [<a href="#ref-W3C.REC-css3-mediaqueries-20120619" title="&quot;Media Queries&quot;">W3C.REC-css3-mediaqueries-20120619</a>], and
396 o Language-Tag from [<a href="./rfc5646" title="&quot;Tags for Identifying Languages&quot;">RFC5646</a>].
397
398 <span class="h3"><a class="selflink" name="section-1.2" href="#section-1.2">1.2</a>. Conformance and Error Handling</span>
399
400 The requirements regarding conformance and error handling highlighted
401 in <a href="./rfc7230#section-2.5">[RFC7230], Section&nbsp;2.5</a> apply to this document.
402
403
404
405
406
407
408
409
410
411
412
413
414 <span class="grey">Nottingham Standards Track [Page 4]</span></pre>
415 <hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-5" id="page-5" href="#page-5" class="invisible"> </a>
416 <span class="grey"><a href="./rfc8288">RFC 8288</a> Web Linking October 2017</span>
417
418
419 <span class="h2"><a class="selflink" name="section-2" href="#section-2">2</a>. Links</span>
420
421 In this specification, a link is a typed connection between two
422 resources and is comprised of:
423
424 o a link context,
425 o a link relation type (<a href="#section-2.1">Section 2.1</a>),
426 o a link target, and
427 o optionally, target attributes (<a href="#section-2.2">Section 2.2</a>).
428
429 A link can be viewed as a statement of the form "link context has a
430 link relation type resource at link target, which has target
431 attributes".
432
433 For example, "https://www.example.com/" has a "canonical" resource at
434 "https://example.com", which has a "type" of "text/html".
435
436 Link contexts and link targets are both Internationalized Resource
437 Identifiers (IRIs) [<a href="./rfc3987" title="&quot;Internationalized Resource Identifiers (IRIs)&quot;">RFC3987</a>]. However, in the common case, the link
438 context will also be a URI [<a href="./rfc3986" title="&quot;Uniform Resource Identifier (URI): Generic Syntax&quot;">RFC3986</a>], because many protocols (such as
439 HTTP) do not support dereferencing IRIs. Likewise, the link target
440 will sometimes be converted to a URI (see <a href="./rfc3987#section-3.1">[RFC3987], Section&nbsp;3.1</a>) in
441 serialisations that do not support IRIs (such as the Link header
442 field defined in <a href="#section-3">Section 3</a>).
443
444 This specification does not place restrictions on the cardinality of
445 links; there can be multiple links to and from a particular target
446 and multiple links of the same or different types between a given
447 context and target. Likewise, the relative ordering of links in any
448 particular serialisation, or between serialisations (e.g., the Link
449 header field and in-content links), is not specified or significant
450 in this specification; applications that wish to consider ordering
451 significant can do so.
452
453 Links are conveyed in link serialisations; they are the "bytes on the
454 wire", and can occur in various forms. For example, Atom [<a href="./rfc4287" title="&quot;The Atom Syndication Format&quot;">RFC4287</a>]
455 and HTML [<a href="#ref-W3C.REC-html5-20141028" title="&quot;HTML5&quot;">W3C.REC-html5-20141028</a>] both defined serialisations of
456 links into their respective formats, and <a href="#section-3">Section 3</a> defines how to
457 serialise links in HTTP header fields.
458
459 This specification does not define a general syntax for links across
460 different serialisations, nor does it mandate a specific context for
461 any given link; it is expected that serialisations of links will
462 specify both aspects.
463
464 Finally, links are used by link applications. Generally, an
465 application will define the link relation type(s) it uses, along with
466 the serialisation(s) that they might occur within. For example, the
467
468
469
470 <span class="grey">Nottingham Standards Track [Page 5]</span></pre>
471 <hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-6" id="page-6" href="#page-6" class="invisible"> </a>
472 <span class="grey"><a href="./rfc8288">RFC 8288</a> Web Linking October 2017</span>
473
474
475 application "Web browsing" looks for the "stylesheet" link relation
476 type in the HTML link serialisation (and optionally in the Link
477 header field), whereas the application "AtomPub" uses the "edit" and
478 "edit-media" link relations in the Atom serialisation.
479
480 <span class="h3"><a class="selflink" name="section-2.1" href="#section-2.1">2.1</a>. Link Relation Types</span>
481
482 In the simplest case, a link relation type identifies the semantics
483 of a link. For example, a link with the relation type "copyright"
484 indicates that the current link context has a copyright resource at
485 the link target.
486
487 Link relation types can also be used to indicate that the target
488 resource has particular attributes, or exhibits particular
489 behaviours; for example, a "service" link implies that the link
490 target can be used as part of a defined protocol (in this case, a
491 service description).
492
493 Relation types are not to be confused with media types [<a href="./rfc2046" title="&quot;Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types&quot;">RFC2046</a>];
494 they do not identify the format of the representation that results
495 when the link is dereferenced. Rather, they only describe how the
496 current context is related to another resource.
497
498 Relation types SHOULD NOT infer any additional semantics based upon
499 the presence or absence of another link relation type, or its own
500 cardinality of occurrence. An exception to this is the combination
501 of the "alternate" and "stylesheet" registered relation types, which
502 has special meaning in HTML for historical reasons.
503
504 There are two kinds of relation types: registered and extension.
505
506 <span class="h4"><a class="selflink" name="section-2.1.1" href="#section-2.1.1">2.1.1</a>. Registered Relation Types</span>
507
508 Well-defined relation types can be registered as tokens for
509 convenience and/or to promote reuse by other applications, using the
510 procedure in <a href="#section-2.1.1.1">Section 2.1.1.1</a>.
511
512 Registered relation type names MUST conform to the reg-rel-type rule
513 (see <a href="#section-3.3">Section 3.3</a>) and MUST be compared character by character in a
514 case-insensitive fashion. They SHOULD be appropriate to the
515 specificity of the relation type; that is, if the semantics are
516 highly specific to a particular application, the name should reflect
517 that, so that more general names are available for less-specific use.
518
519 Registered relation types MUST NOT constrain the media type of the
520 link context and MUST NOT constrain the available representation
521 media types of the link target. However, they can specify the
522 behaviours and properties of the target resource (e.g., allowable
523
524
525
526 <span class="grey">Nottingham Standards Track [Page 6]</span></pre>
527 <hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-7" id="page-7" href="#page-7" class="invisible"> </a>
528 <span class="grey"><a href="./rfc8288">RFC 8288</a> Web Linking October 2017</span>
529
530
531 HTTP methods, and request and response media types that are required
532 be supported).
533
534 Historically, registered relation types have been identified with a
535 URI [<a href="./rfc3986" title="&quot;Uniform Resource Identifier (URI): Generic Syntax&quot;">RFC3986</a>] by prefixing their names with an application-defined
536 base URI (e.g., see <a href="#appendix-A.2">Appendix A.2</a>). This practice is NOT RECOMMENDED,
537 because the resulting strings will not be considered equivalent to
538 the registered relation types by other applications. Applications
539 that do use such URIs internally MUST NOT use them in link
540 serialisations that do not explicitly accommodate them.
541
542 <span class="h5"><a class="selflink" name="section-2.1.1.1" href="#section-2.1.1.1">2.1.1.1</a>. Registering Link Relation Types</span>
543
544 The "Link Relations" registry is located at
545 &lt;<a href="https://www.iana.org/assignments/link-relations/">https://www.iana.org/assignments/link-relations/</a>&gt;. Registration
546 requests can be made by following the instructions located there or
547 by sending an email to the &lt;link-relations@ietf.org&gt; mailing list.
548
549 Registration requests consist of at least the following information:
550
551 o *Relation Name*: The name of the relation type
552
553 o *Description*: A short English description of the type's
554 semantics. It SHOULD be stated in terms of the relationship
555 between the link context and link target.
556
557 o *Reference*: Reference to the document that specifies the link
558 relation type, preferably including a URI that can be used to
559 retrieve a copy of the document. An indication of the relevant
560 section(s) can also be included but is not required.
561
562 The expert(s) can define additional fields to be collected in the
563 registry.
564
565 General requirements for registered relation types are described in
566 <a href="#section-2.1.1">Section 2.1.1</a>.
567
568 Registrations MUST reference a freely available, stable
569 specification.
570
571 Note that relation types can be registered by third parties
572 (including the expert(s)), if the expert(s) determines that an
573 unregistered relation type is widely deployed and not likely to be
574 registered in a timely manner otherwise. Such registrations still
575 are subject to the requirements defined, including the need to
576 reference a specification.
577
578
579
580
581
582 <span class="grey">Nottingham Standards Track [Page 7]</span></pre>
583 <hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-8" id="page-8" href="#page-8" class="invisible"> </a>
584 <span class="grey"><a href="./rfc8288">RFC 8288</a> Web Linking October 2017</span>
585
586
587 <span class="h5"><a class="selflink" name="section-2.1.1.2" href="#section-2.1.1.2">2.1.1.2</a>. Registration Request Processing</span>
588
589 Relation types are registered using the Specification Required policy
590 (see <a href="./rfc8126#section-4.6">Section&nbsp;4.6 of [RFC8126]</a>), which implies review and approval by
591 a designated expert.
592
593 The goal of the registry is to reflect common use of links on the
594 Internet. Therefore, the expert(s) should be strongly biased towards
595 approving registrations, unless they are abusive, frivolous, not
596 likely to be used on the Internet, or actively harmful to the
597 Internet and/or the Web (not merely aesthetically displeasing or
598 architecturally dubious). As stated in <a href="#section-2.1.1">Section 2.1.1</a>, the expert(s)
599 can withhold registration of names that are too general for the
600 proposed application.
601
602 The expert(s) will clearly identify any issues that cause a
603 registration to be refused. Advice about the semantics of a proposed
604 link relation type can be given, but if it does not block
605 registration, this should be explicitly stated.
606
607 When a request is approved, the expert(s) will inform IANA, and the
608 registration will be processed. The IESG is the final arbiter of any
609 objection.
610
611 <span class="h4"><a class="selflink" name="section-2.1.2" href="#section-2.1.2">2.1.2</a>. Extension Relation Types</span>
612
613 Applications that don't wish to register a relation type can use an
614 extension relation type, which is a URI [<a href="./rfc3986" title="&quot;Uniform Resource Identifier (URI): Generic Syntax&quot;">RFC3986</a>] that uniquely
615 identifies the relation type. Although the URI can point to a
616 resource that contains a definition of the semantics of the relation
617 type, clients SHOULD NOT automatically access that resource to avoid
618 overburdening its server.
619
620 The URI used for an extension relation type SHOULD be under the
621 control of the person or party defining it or be delegated to them.
622
623 When extension relation types are compared, they MUST be compared as
624 strings (after converting to URIs if serialised in a different
625 format) in a case-insensitive fashion, character by character.
626 Because of this, all-lowercase URIs SHOULD be used for extension
627 relations.
628
629 Note that while extension relation types are required to be URIs, a
630 serialisation of links can specify that they are expressed in another
631 form, as long as they can be converted to URIs.
632
633
634
635
636
637
638 <span class="grey">Nottingham Standards Track [Page 8]</span></pre>
639 <hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-9" id="page-9" href="#page-9" class="invisible"> </a>
640 <span class="grey"><a href="./rfc8288">RFC 8288</a> Web Linking October 2017</span>
641
642
643 <span class="h3"><a class="selflink" name="section-2.2" href="#section-2.2">2.2</a>. Target Attributes</span>
644
645 Target attributes are a list of key/value pairs that describe the
646 link or its target; for example, a media type hint.
647
648 They can be defined both by individual link relation types and by
649 link serialisations.
650
651 This specification does not attempt to coordinate the name of target
652 attributes, their cardinality, or use. Those creating and
653 maintaining serialisations SHOULD coordinate their target attributes
654 to avoid conflicts in semantics or syntax and MAY define their own
655 registries of target attributes.
656
657 The names of target attributes SHOULD conform to the token rule, but
658 SHOULD NOT include any of the characters "%", "'", or "*", for
659 portability across serialisations and MUST be compared in a case-
660 insensitive fashion.
661
662 Target attribute definitions SHOULD specify:
663
664 o The serialisation of their values into Unicode or a subset
665 thereof, to maximise their chances of portability across link
666 serialisations.
667 o The semantics and error handling of multiple occurrences of the
668 target attribute on a given link.
669
670 This specification does define target attributes for use in the Link
671 HTTP header field in <a href="#section-3.4">Section 3.4</a>.
672
673 <span class="h2"><a class="selflink" name="section-3" href="#section-3">3</a>. Link Serialisation in HTTP Headers</span>
674
675 The Link header field provides a means for serialising one or more
676 links into HTTP headers.
677
678 The ABNF for the field value is:
679
680 Link = #link-value
681 link-value = "&lt;" URI-Reference "&gt;" *( OWS ";" OWS link-param )
682 link-param = token BWS [ "=" BWS ( token / quoted-string ) ]
683
684 Note that any link-param can be generated with values using either
685 the token or the quoted-string syntax; therefore, recipients MUST be
686 able to parse both forms. In other words, the following parameters
687 are equivalent:
688
689 x=y
690 x="y"
691
692
693
694 <span class="grey">Nottingham Standards Track [Page 9]</span></pre>
695 <hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-10" id="page-10" href="#page-10" class="invisible"> </a>
696 <span class="grey"><a href="./rfc8288">RFC 8288</a> Web Linking October 2017</span>
697
698
699 Previous definitions of the Link header did not equate the token and
700 quoted-string forms explicitly; the title parameter was always
701 quoted, and the hreflang parameter was always a token. Senders
702 wishing to maximize interoperability will send them in those forms.
703
704 Individual link-params specify their syntax in terms of the value
705 after any necessary unquoting (as per <a href="./rfc7230#section-3.2.6">[RFC7230], Section&nbsp;3.2.6</a>).
706
707 This specification establishes the link-params "rel", "anchor", and
708 "rev" (which are part of the general link model), as well as
709 "hreflang", "media", "title", "title*", and "type" (which are target
710 attributes defined by the serialisation).
711
712 <span class="h3"><a class="selflink" name="section-3.1" href="#section-3.1">3.1</a>. Link Target</span>
713
714 Each link-value conveys one target IRI as a URI-Reference (after
715 conversion to one, if necessary; see <a href="./rfc3987#section-3.1">[RFC3987], Section&nbsp;3.1</a>) inside
716 angle brackets ("&lt;&gt;"). If the URI-Reference is relative, parsers
717 MUST resolve it as per <a href="./rfc3986#section-5">[RFC3986], Section&nbsp;5</a>. Note that any base IRI
718 appearing in the message's content is not applied.
719
720 <span class="h3"><a class="selflink" name="section-3.2" href="#section-3.2">3.2</a>. Link Context</span>
721
722 By default, the context of a link conveyed in the Link header field
723 is the URL of the representation it is associated with, as defined in
724 <a href="./rfc7231#section-3.1.4.1">[RFC7231], Section&nbsp;3.1.4.1</a>, and is serialised as a URI.
725
726 When present, the anchor parameter overrides this with another URI,
727 such as a fragment of this resource, or a third resource (i.e., when
728 the anchor value is an absolute URI). If the anchor parameter's
729 value is a relative URI, parsers MUST resolve it as per <a href="./rfc3986#section-5">[RFC3986],
730 Section&nbsp;5</a>. Note that any base URI from the body's content is not
731 applied.
732
733 The ABNF for the "anchor" parameter's value is:
734
735 URI-Reference ; <a href="./rfc3986#section-4.1">Section&nbsp;4.1 of [RFC3986]</a>
736
737 Link application can choose to ignore links with an anchor parameter.
738 For example, the application in use might not allow the link context
739 to be assigned to a different resource. In such cases, the entire
740 link is to be ignored; link applications MUST NOT process the link
741 without applying the anchor.
742
743 Note that depending on HTTP status code and response headers, the
744 link context might be "anonymous" (i.e., no link context is
745 available). For example, this is the case on a 404 response to a GET
746 request.
747
748
749
750 <span class="grey">Nottingham Standards Track [Page 10]</span></pre>
751 <hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-11" id="page-11" href="#page-11" class="invisible"> </a>
752 <span class="grey"><a href="./rfc8288">RFC 8288</a> Web Linking October 2017</span>
753
754
755 <span class="h3"><a class="selflink" name="section-3.3" href="#section-3.3">3.3</a>. Relation Type</span>
756
757 The relation type of a link conveyed in the Link header field is
758 conveyed in the "rel" parameter's value. The rel parameter MUST be
759 present but MUST NOT appear more than once in a given link-value;
760 occurrences after the first MUST be ignored by parsers.
761
762 The rel parameter can, however, contain multiple link relation types.
763 When this occurs, it establishes multiple links that share the same
764 context, target, and target attributes.
765
766 The "rev" parameter has been used in the past to indicate that the
767 semantics of the relationship are in the reverse direction. That is,
768 a link from A to B with REL="X" expresses the same relationship as a
769 link from B to A with REV="X". rev is deprecated by this
770 specification because it often confuses authors and readers; in most
771 cases, using a separate relation type is preferable.
772
773 The ABNF for the rel and rev parameters' values is:
774
775 relation-type *( 1*SP relation-type )
776
777 where:
778
779 relation-type = reg-rel-type / ext-rel-type
780 reg-rel-type = LOALPHA *( LOALPHA / DIGIT / "." / "-" )
781 ext-rel-type = URI ; <a href="./rfc3986#section-3">Section&nbsp;3 of [RFC3986]</a>
782
783 Note that extension relation types are REQUIRED to be absolute URIs
784 in Link header fields and MUST be quoted when they contain characters
785 not allowed in tokens, such as a semicolon (";") or comma (",") (as
786 these characters are used as delimiters in the header field itself).
787
788 <span class="h3"><a class="selflink" name="section-3.4" href="#section-3.4">3.4</a>. Target Attributes</span>
789
790 The Link header field defines several target attributes specific to
791 this serialisation and also allows extension target attributes.
792 Target attributes are serialised in the Link header field as
793 parameters (see <a href="./rfc7231#section-3.1.1.1">[RFC7231], Section&nbsp;3.1.1.1</a> for the definition of
794 their syntax).
795
796 <span class="h4"><a class="selflink" name="section-3.4.1" href="#section-3.4.1">3.4.1</a>. Serialisation-Defined Attributes</span>
797
798 The "hreflang", "media", "title", "title*", and "type" link-params
799 can be translated to serialisation-defined target attributes for the
800 link.
801
802
803
804
805
806 <span class="grey">Nottingham Standards Track [Page 11]</span></pre>
807 <hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-12" id="page-12" href="#page-12" class="invisible"> </a>
808 <span class="grey"><a href="./rfc8288">RFC 8288</a> Web Linking October 2017</span>
809
810
811 The "hreflang" attribute, when present, is a hint indicating what the
812 language of the result of dereferencing the link should be. Note
813 that this is only a hint; for example, it does not override the
814 Content-Language header field of a HTTP response obtained by actually
815 following the link. Multiple hreflang attributes on a single link-
816 value indicate that multiple languages are available from the
817 indicated resource.
818
819 The ABNF for the hreflang parameter's value is:
820
821 Language-Tag
822
823 The "media" attribute, when present, is used to indicate intended
824 destination medium or media for style information (see
825 [<a href="#ref-W3C.REC-html5-20141028" title="&quot;HTML5&quot;">W3C.REC-html5-20141028</a>], Section 4.2.4). Its value MUST be quoted
826 if it contains a semicolon (";") or comma (","). There MUST NOT be
827 more than one media attribute in a link-value; occurrences after the
828 first MUST be ignored by parsers.
829
830 The ABNF for the media parameter's value is:
831
832 media-query-list
833
834 The "title" attribute, when present, is used to label the destination
835 of a link such that it can be used as a human-readable identifier
836 (e.g., a menu entry) in the language indicated by the Content-
837 Language header field (if present). The title attribute MUST NOT
838 appear more than once in a given link; occurrences after the first
839 MUST be ignored by parsers.
840
841 The "title*" link-param can be used to encode this attribute in a
842 different character set and/or contain language information as per
843 [<a href="./rfc8187" title="&quot;Indicating Character Encoding and Language for HTTP Header Field Parameters&quot;">RFC8187</a>]. The title* link-param MUST NOT appear more than once in a
844 given link-value; occurrences after the first MUST be ignored by
845 parsers. If the attribute does not contain language information, its
846 language is indicated by the Content-Language header field (when
847 present).
848
849 If both the title and title* link-params appear in a link,
850 applications SHOULD use the title* link-param's value for the title
851 attribute.
852
853 The "type" attribute, when present, is a hint indicating what the
854 media type of the result of dereferencing the link should be. Note
855 that this is only a hint; for example, it does not override the
856 Content-Type header field of a HTTP response obtained by actually
857
858
859
860
861
862 <span class="grey">Nottingham Standards Track [Page 12]</span></pre>
863 <hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-13" id="page-13" href="#page-13" class="invisible"> </a>
864 <span class="grey"><a href="./rfc8288">RFC 8288</a> Web Linking October 2017</span>
865
866
867 following the link. The type attribute MUST NOT appear more than
868 once in a given link-value; occurrences after the first MUST be
869 ignored by parsers.
870
871 The ABNF for the type parameter's value is:
872
873 type-name "/" subtype-name ; see <a href="./rfc6838#section-4.2">Section&nbsp;4.2 of [RFC6838]</a>
874
875 <span class="h4"><a class="selflink" name="section-3.4.2" href="#section-3.4.2">3.4.2</a>. Extension Attributes</span>
876
877 Other link-params are link-extensions and are to be considered as
878 target attributes.
879
880 Such target attributes MAY be defined to use the encoding in
881 [<a href="./rfc8187" title="&quot;Indicating Character Encoding and Language for HTTP Header Field Parameters&quot;">RFC8187</a>] (e.g., "example" and "example*"). When both forms are
882 present, they SHOULD be considered to be the same target attribute;
883 applications SHOULD use the value of the name ending in "*" (after
884 [<a href="./rfc8187" title="&quot;Indicating Character Encoding and Language for HTTP Header Field Parameters&quot;">RFC8187</a>] decoding) but MAY fall back to the other value if there is
885 an error in decoding it, or if they do not support decoding.
886
887 <span class="h3"><a class="selflink" name="section-3.5" href="#section-3.5">3.5</a>. Link Header Field Examples</span>
888
889 For example:
890
891 Link: &lt;http://example.com/TheBook/chapter2&gt;; rel="previous";
892 title="previous chapter"
893
894 indicates that "chapter2" is previous to this resource in a logical
895 navigation path.
896
897 Similarly,
898
899 Link: &lt;/&gt;; rel="http://example.net/foo"
900
901 indicates that the root resource ("/") is related to this resource
902 with the extension relation type "http://example.net/foo".
903
904 This link:
905
906 Link: &lt;/terms&gt;; rel="copyright"; anchor="#foo"
907
908 indicates that the linked copyright terms only apply to the portion
909 of the document indicated by the (media type-specific) fragment
910 identifier "foo".
911
912 The example below shows an instance of the Link header field encoding
913 multiple links and also the use of the encoding from <a href="./rfc8187">RFC 8187</a> to
914 encode both non-ASCII characters and language information.
915
916
917
918 <span class="grey">Nottingham Standards Track [Page 13]</span></pre>
919 <hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-14" id="page-14" href="#page-14" class="invisible"> </a>
920 <span class="grey"><a href="./rfc8288">RFC 8288</a> Web Linking October 2017</span>
921
922
923 Link: &lt;/TheBook/chapter2&gt;;
924 rel="previous"; title*=UTF-8'de'letztes%20Kapitel,
925 &lt;/TheBook/chapter4&gt;;
926 rel="next"; title*=UTF-8'de'n%c3%a4chstes%20Kapitel
927
928 Here, both links have titles encoded in UTF-8, both use the German
929 language ("de"), and the second link contains the Unicode code point
930 U+00E4 ("LATIN SMALL LETTER A WITH DIAERESIS").
931
932 Note that link-values can convey multiple links between the same link
933 target and link context; for example:
934
935 Link: &lt;http://example.org/&gt;;
936 rel="start http://example.net/relation/other"
937
938 Here, the link to "http://example.org/" has the registered relation
939 type "start" and the extension relation type
940 "http://example.net/relation/other".
941
942 Finally, this header field:
943
944 Link: &lt;https://example.org/&gt;; rel="start",
945 &lt;https://example.org/index&gt;; rel="index"
946
947 is equivalent to these:
948
949 Link: &lt;https://example.org/&gt;; rel="start"
950 Link: &lt;https://example.org/index&gt;; rel="index"
951
952 <span class="h2"><a class="selflink" name="section-4" href="#section-4">4</a>. IANA Considerations</span>
953
954 <span class="h3"><a class="selflink" name="section-4.1" href="#section-4.1">4.1</a>. Link HTTP Header Field Registration</span>
955
956 This specification updates the "Message Headers" registry entry for
957 "Link" in HTTP [<a href="./rfc3864" title="&quot;Registration Procedures for Message Header Fields&quot;">RFC3864</a>] to refer to this document.
958
959 Header Field Name: Link
960 Protocol: http
961 Status: standard
962 Reference: <a href="./rfc8288">RFC 8288</a>
963
964 <span class="h3"><a class="selflink" name="section-4.2" href="#section-4.2">4.2</a>. Link Relation Type Registry</span>
965
966 This specification updates the registration procedures for the "Link
967 Relation Types" registry; see <a href="#section-2.1.1.1">Section 2.1.1.1</a>. Also, all references
968 to <a href="./rfc5988">RFC 5988</a> in that registry have been replaced with references to
969 this document.
970
971
972
973
974 <span class="grey">Nottingham Standards Track [Page 14]</span></pre>
975 <hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-15" id="page-15" href="#page-15" class="invisible"> </a>
976 <span class="grey"><a href="./rfc8288">RFC 8288</a> Web Linking October 2017</span>
977
978
979 IANA will direct any incoming requests regarding the registry to this
980 document and, if defined, the processes established by the expert(s);
981 typically, this will mean referring them to the registry Web page.
982
983 Note that the expert(s) is allowed (as per <a href="#section-2.1.1.1">Section 2.1.1.1</a>) to define
984 additional fields to be collected in the registry.
985
986 <span class="h3"><a class="selflink" name="section-4.3" href="#section-4.3">4.3</a>. Link Relation Application Data Registry</span>
987
988 Per this specification, IANA has removed the "Link Relation
989 Application Data" registry, as it has not been used, and future use
990 is not anticipated.
991
992 <span class="h2"><a class="selflink" name="section-5" href="#section-5">5</a>. Security Considerations</span>
993
994 The content of the Link header field is not secure, private, or
995 integrity-guaranteed. Use of Transport Layer Security (TLS) with
996 HTTP [<a href="./rfc2818" title="&quot;HTTP Over TLS&quot;">RFC2818</a>] is currently the only end-to-end way to provide these
997 properties.
998
999 Link applications ought to consider the attack vectors opened by
1000 automatically following, trusting, or otherwise using links gathered
1001 from HTTP header fields.
1002
1003 For example, Link header fields that use the "anchor" parameter to
1004 associate a link's context with another resource cannot be trusted
1005 since they are effectively assertions by a third party that could be
1006 incorrect or malicious. Applications can mitigate this risk by
1007 specifying that such links should be discarded unless some
1008 relationship between the resources is established (e.g., they share
1009 the same authority).
1010
1011 Dereferencing links has a number of risks, depending on the
1012 application in use. For example, the Referer header [<a href="./rfc7231" title="&quot;Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content&quot;">RFC7231</a>] can
1013 expose information about the application's state (including private
1014 information) in its value. Likewise, cookies [<a href="./rfc6265" title="&quot;HTTP State Management Mechanism&quot;">RFC6265</a>] are another
1015 mechanism that, if used, can become an attack vector. Applications
1016 can mitigate these risks by carefully specifying how such mechanisms
1017 should operate.
1018
1019 The Link header field makes extensive use of IRIs and URIs. See
1020 <a href="./rfc3987#section-8">[RFC3987], Section&nbsp;8</a> for security considerations relating to IRIs.
1021 See <a href="./rfc3986#section-7">[RFC3986], Section&nbsp;7</a> for security considerations relating to
1022 URIs. See <a href="./rfc7230#section-9">[RFC7230], Section&nbsp;9</a> for security considerations relating
1023 to HTTP header fields.
1024
1025
1026
1027
1028
1029
1030 <span class="grey">Nottingham Standards Track [Page 15]</span></pre>
1031 <hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-16" id="page-16" href="#page-16" class="invisible"> </a>
1032 <span class="grey"><a href="./rfc8288">RFC 8288</a> Web Linking October 2017</span>
1033
1034
1035 <span class="h2"><a class="selflink" name="section-6" href="#section-6">6</a>. Internationalisation Considerations</span>
1036
1037 Link targets may need to be converted to URIs in order to express
1038 them in serialisations that do not support IRIs. This includes the
1039 Link HTTP header field.
1040
1041 Similarly, the anchor parameter of the Link header field does not
1042 support IRIs; therefore, IRIs must be converted to URIs before
1043 inclusion there.
1044
1045 Relation types are defined as URIs, not IRIs, to aid in their
1046 comparison. It is not expected that they will be displayed to end
1047 users.
1048
1049 Note that registered Relation Names are required to be lowercase
1050 ASCII letters.
1051
1052 <span class="h2"><a class="selflink" name="section-7" href="#section-7">7</a>. References</span>
1053
1054 <span class="h3"><a class="selflink" name="section-7.1" href="#section-7.1">7.1</a>. Normative References</span>
1055
1056 [<a name="ref-RFC2119" id="ref-RFC2119">RFC2119</a>] Bradner, S., "Key words for use in RFCs to Indicate
1057 Requirement Levels", <a href="./bcp14">BCP 14</a>, <a href="./rfc2119">RFC 2119</a>,
1058 DOI 10.17487/RFC2119, March 1997,
1059 &lt;<a href="https://www.rfc-editor.org/info/rfc2119">https://www.rfc-editor.org/info/rfc2119</a>&gt;.
1060
1061 [<a name="ref-RFC3864" id="ref-RFC3864">RFC3864</a>] Klyne, G., Nottingham, M., and J. Mogul, "Registration
1062 Procedures for Message Header Fields", <a href="./bcp90">BCP 90</a>, <a href="./rfc3864">RFC 3864</a>,
1063 DOI 10.17487/RFC3864, September 2004,
1064 &lt;<a href="https://www.rfc-editor.org/info/rfc3864">https://www.rfc-editor.org/info/rfc3864</a>&gt;.
1065
1066 [<a name="ref-RFC3986" id="ref-RFC3986">RFC3986</a>] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
1067 Resource Identifier (URI): Generic Syntax", STD 66,
1068 <a href="./rfc3986">RFC 3986</a>, DOI 10.17487/RFC3986, January 2005,
1069 &lt;<a href="https://www.rfc-editor.org/info/rfc3986">https://www.rfc-editor.org/info/rfc3986</a>&gt;.
1070
1071 [<a name="ref-RFC3987" id="ref-RFC3987">RFC3987</a>] Duerst, M. and M. Suignard, "Internationalized Resource
1072 Identifiers (IRIs)", <a href="./rfc3987">RFC 3987</a>, DOI 10.17487/RFC3987,
1073 January 2005, &lt;<a href="https://www.rfc-editor.org/info/rfc3987">https://www.rfc-editor.org/info/rfc3987</a>&gt;.
1074
1075 [<a name="ref-RFC5234" id="ref-RFC5234">RFC5234</a>] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax
1076 Specifications: ABNF", STD 68, <a href="./rfc5234">RFC 5234</a>,
1077 DOI 10.17487/RFC5234, January 2008,
1078 &lt;<a href="https://www.rfc-editor.org/info/rfc5234">https://www.rfc-editor.org/info/rfc5234</a>&gt;.
1079
1080 [<a name="ref-RFC5646" id="ref-RFC5646">RFC5646</a>] Phillips, A., Ed. and M. Davis, Ed., "Tags for Identifying
1081 Languages", <a href="./bcp47">BCP 47</a>, <a href="./rfc5646">RFC 5646</a>, DOI 10.17487/RFC5646,
1082 September 2009, &lt;<a href="https://www.rfc-editor.org/info/rfc5646">https://www.rfc-editor.org/info/rfc5646</a>&gt;.
1083
1084
1085
1086 <span class="grey">Nottingham Standards Track [Page 16]</span></pre>
1087 <hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-17" id="page-17" href="#page-17" class="invisible"> </a>
1088 <span class="grey"><a href="./rfc8288">RFC 8288</a> Web Linking October 2017</span>
1089
1090
1091 [<a name="ref-RFC6838" id="ref-RFC6838">RFC6838</a>] Freed, N., Klensin, J., and T. Hansen, "Media Type
1092 Specifications and Registration Procedures", <a href="./bcp13">BCP 13</a>,
1093 <a href="./rfc6838">RFC 6838</a>, DOI 10.17487/RFC6838, January 2013,
1094 &lt;<a href="https://www.rfc-editor.org/info/rfc6838">https://www.rfc-editor.org/info/rfc6838</a>&gt;.
1095
1096 [<a name="ref-RFC7230" id="ref-RFC7230">RFC7230</a>] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer
1097 Protocol (HTTP/1.1): Message Syntax and Routing",
1098 <a href="./rfc7230">RFC 7230</a>, DOI 10.17487/RFC7230, June 2014,
1099 &lt;<a href="https://www.rfc-editor.org/info/rfc7230">https://www.rfc-editor.org/info/rfc7230</a>&gt;.
1100
1101 [<a name="ref-RFC7231" id="ref-RFC7231">RFC7231</a>] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer
1102 Protocol (HTTP/1.1): Semantics and Content", <a href="./rfc7231">RFC 7231</a>,
1103 DOI 10.17487/RFC7231, June 2014,
1104 &lt;<a href="https://www.rfc-editor.org/info/rfc7231">https://www.rfc-editor.org/info/rfc7231</a>&gt;.
1105
1106 [<a name="ref-RFC8126" id="ref-RFC8126">RFC8126</a>] Cotton, M., Leiba, B., and T. Narten, "Guidelines for
1107 Writing an IANA Considerations Section in RFCs", <a href="./bcp26">BCP 26</a>,
1108 <a href="./rfc8126">RFC 8126</a>, DOI 10.17487/RFC8126, June 2017,
1109 &lt;<a href="https://www.rfc-editor.org/info/rfc8126">https://www.rfc-editor.org/info/rfc8126</a>&gt;.
1110
1111 [<a name="ref-RFC8174" id="ref-RFC8174">RFC8174</a>] Leiba, B., "Ambiguity of Uppercase vs Lowercase in <a href="./rfc2119">RFC</a>
1112 <a href="./rfc2119">2119</a> Key Words", <a href="./bcp14">BCP 14</a>, <a href="./rfc8174">RFC 8174</a>, DOI 10.17487/RFC8174,
1113 May 2017, &lt;<a href="https://www.rfc-editor.org/info/rfc8174">https://www.rfc-editor.org/info/rfc8174</a>&gt;.
1114
1115 [<a name="ref-RFC8187" id="ref-RFC8187">RFC8187</a>] Reschke, J., "Indicating Character Encoding and Language
1116 for HTTP Header Field Parameters", <a href="./rfc8187">RFC 8187</a>,
1117 DOI 10.17487/RFC8187, September 2017,
1118 &lt;<a href="https://www.rfc-editor.org/info/rfc8187">https://www.rfc-editor.org/info/rfc8187</a>&gt;.
1119
1120 [<a name="ref-W3C.REC-css3-mediaqueries-20120619" id="ref-W3C.REC-css3-mediaqueries-20120619">W3C.REC-css3-mediaqueries-20120619</a>]
1121 Rivoal, F., "Media Queries", W3C Recommendation
1122 REC-css3-mediaqueries-20120619, June 2012,
1123 &lt;<a href="http://www.w3.org/TR/2012/REC-css3-mediaqueries-20120619">http://www.w3.org/TR/2012/</a>
1124 <a href="http://www.w3.org/TR/2012/REC-css3-mediaqueries-20120619">REC-css3-mediaqueries-20120619</a>&gt;.
1125
1126 <span class="h3"><a class="selflink" name="section-7.2" href="#section-7.2">7.2</a>. Informative References</span>
1127
1128 [<a name="ref-RFC2046" id="ref-RFC2046">RFC2046</a>] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
1129 Extensions (MIME) Part Two: Media Types", <a href="./rfc2046">RFC 2046</a>,
1130 DOI 10.17487/RFC2046, November 1996,
1131 &lt;<a href="https://www.rfc-editor.org/info/rfc2046">https://www.rfc-editor.org/info/rfc2046</a>&gt;.
1132
1133 [<a name="ref-RFC2818" id="ref-RFC2818">RFC2818</a>] Rescorla, E., "HTTP Over TLS", <a href="./rfc2818">RFC 2818</a>,
1134 DOI 10.17487/RFC2818, May 2000,
1135 &lt;<a href="https://www.rfc-editor.org/info/rfc2818">https://www.rfc-editor.org/info/rfc2818</a>&gt;.
1136
1137
1138
1139
1140
1141
1142 <span class="grey">Nottingham Standards Track [Page 17]</span></pre>
1143 <hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-18" id="page-18" href="#page-18" class="invisible"> </a>
1144 <span class="grey"><a href="./rfc8288">RFC 8288</a> Web Linking October 2017</span>
1145
1146
1147 [<a name="ref-RFC4287" id="ref-RFC4287">RFC4287</a>] Nottingham, M., Ed. and R. Sayre, Ed., "The Atom
1148 Syndication Format", <a href="./rfc4287">RFC 4287</a>, DOI 10.17487/RFC4287,
1149 December 2005, &lt;<a href="https://www.rfc-editor.org/info/rfc4287">https://www.rfc-editor.org/info/rfc4287</a>&gt;.
1150
1151 [<a name="ref-RFC6265" id="ref-RFC6265">RFC6265</a>] Barth, A., "HTTP State Management Mechanism", <a href="./rfc6265">RFC 6265</a>,
1152 DOI 10.17487/RFC6265, April 2011,
1153 &lt;<a href="https://www.rfc-editor.org/info/rfc6265">https://www.rfc-editor.org/info/rfc6265</a>&gt;.
1154
1155 [<a name="ref-W3C.REC-html5-20141028" id="ref-W3C.REC-html5-20141028">W3C.REC-html5-20141028</a>]
1156 Hickson, I., Berjon, R., Faulkner, S., Leithead, T.,
1157 Navara, E., O'Connor, T., and S. Pfeiffer, "HTML5", W3C
1158 Recommendation REC-html5-20141028, October 2014,
1159 &lt;<a href="http://www.w3.org/TR/2014/REC-html5-20141028">http://www.w3.org/TR/2014/REC-html5-20141028</a>&gt;.
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198 <span class="grey">Nottingham Standards Track [Page 18]</span></pre>
1199 <hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-19" id="page-19" href="#page-19" class="invisible"> </a>
1200 <span class="grey"><a href="./rfc8288">RFC 8288</a> Web Linking October 2017</span>
1201
1202
1203 <span class="h2"><a class="selflink" name="appendix-A" href="#appendix-A">Appendix A</a>. Notes on Other Link Serialisations</span>
1204
1205 Header fields (<a href="#section-3">Section 3</a>) are only one serialisation of links; other
1206 specifications have defined alternative serialisations.
1207
1208 <span class="h3"><a class="selflink" name="appendix-A.1" href="#appendix-A.1">A.1</a>. Link Serialisation in HTML</span>
1209
1210 HTML motivated the original syntax of the Link header field, and many
1211 of the design decisions in this document are driven by a desire to
1212 stay compatible with it.
1213
1214 In HTML, the link element can be mapped to links as specified here by
1215 using the "href" attribute for the target URI, and "rel" to convey
1216 the relation type, as in the Link header field. The context of the
1217 link is the URI associated with the entire HTML document. HTML also
1218 defines several attributes on links that can be seen as target
1219 attributes, including "media", "hreflang", "type", and "sizes".
1220
1221 <a href="#section-4.8">Section 4.8</a> of HTML5 [<a href="#ref-W3C.REC-html5-20141028" title="&quot;HTML5&quot;">W3C.REC-html5-20141028</a>] defines modern HTML
1222 links. That document links to the Microformats Wiki as a registry;
1223 over time, the IANA registry ought to mirror its contents and,
1224 ideally, eventually replace it (although that depends on the HTML
1225 community).
1226
1227 Surveys of existing HTML content have shown that unregistered link
1228 relation types that are not URIs are (perhaps inevitably) common.
1229 Consuming HTML implementations ought not consider such unregistered
1230 short links to be errors, but rather relation types with a local
1231 scope (i.e., their meaning is specific and perhaps private to that
1232 document).
1233
1234 Finally, the HTML specification gives a special meaning when the
1235 "alternate" relation types coincide with other relation types in the
1236 same link. Such links ought to be serialised in the Link header
1237 field using a single list of relation-types (e.g., rel="alternate
1238 stylesheet") to preserve this relationship.
1239
1240 <span class="h3"><a class="selflink" name="appendix-A.2" href="#appendix-A.2">A.2</a>. Link Serialisation in Atom</span>
1241
1242 Atom [<a href="./rfc4287" title="&quot;The Atom Syndication Format&quot;">RFC4287</a>] is a link serialisation that conveys links in the
1243 atom:link element, with the "href" attribute indicating the link
1244 target and the "rel" attribute containing the relation type. The
1245 context of the link is either a feed locator or an entry ID,
1246 depending on where it appears; generally, feed-level links are
1247 obvious candidates for transmission as a Link header field.
1248
1249 When serialising an atom:link into a Link header field, it is
1250 necessary to convert link targets (if used) to URIs.
1251
1252
1253
1254 <span class="grey">Nottingham Standards Track [Page 19]</span></pre>
1255 <hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-20" id="page-20" href="#page-20" class="invisible"> </a>
1256 <span class="grey"><a href="./rfc8288">RFC 8288</a> Web Linking October 2017</span>
1257
1258
1259 Atom defines extension relation types in terms of IRIs. This
1260 specification redefines them as URIs, to simplify and reduce errors
1261 in their comparison.
1262
1263 Atom allows registered link relation types to be serialised as
1264 absolute URIs using a prefix, "<a href="http://www.iana.org/assignments/relation/">http://www.iana.org/assignments/</a>
1265 <a href="http://www.iana.org/assignments/relation/">relation/</a>". This prefix is specific to the Atom serialisation.
1266
1267 Furthermore, link relation types are always compared in a case-
1268 sensitive fashion; therefore, registered link relation types SHOULD
1269 be converted to their registered form (usually, lowercase) when
1270 serialised in an Atom document.
1271
1272 Note also that while the Link header field allows multiple relations
1273 to be serialised in a single link, atom:link does not. In this case,
1274 a single link-value may map to several atom:link elements.
1275
1276 As with HTML, atom:link defines some attributes that are not
1277 explicitly mirrored in the Link header field syntax, but they can
1278 also be used as link-extensions to maintain fidelity.
1279
1280 <span class="h2"><a class="selflink" name="appendix-B" href="#appendix-B">Appendix B</a>. Algorithms for Parsing Link Header Fields</span>
1281
1282 This appendix outlines a set of non-normative algorithms: for parsing
1283 the Link header(s) out of a header set, for parsing a Link header
1284 field value, and algorithms for parsing generic parts of the field
1285 value.
1286
1287 These algorithms are more permissive than the ABNF defining the
1288 syntax might suggest; the error handling embodied in them is a
1289 reasonable approach, but not one that is required. As such they are
1290 advisory only, and in cases where there is disagreement, the correct
1291 behaviour is defined by the body of this specification.
1292
1293 <span class="h3"><a class="selflink" name="appendix-B.1" href="#appendix-B.1">B.1</a>. Parsing a Header Set for Links</span>
1294
1295 This algorithm can be used to parse the Link header fields that a
1296 HTTP header set contains. Given a header_set of (string field_name,
1297 string field_value) pairs, assuming ASCII encoding, it returns a list
1298 of link objects.
1299
1300 1. Let field_values be a list containing the members of header_set
1301 whose field_name is a case-insensitive match for "link".
1302
1303 2. Let links be an empty list.
1304
1305
1306
1307
1308
1309
1310 <span class="grey">Nottingham Standards Track [Page 20]</span></pre>
1311 <hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-21" id="page-21" href="#page-21" class="invisible"> </a>
1312 <span class="grey"><a href="./rfc8288">RFC 8288</a> Web Linking October 2017</span>
1313
1314
1315 3. For each field_value in field_values:
1316 1. Let value_links be the result of Parsing a Link Field Value
1317 (Appendix B.2) from field_value.
1318 2. Append each member of value_links to links.
1319
1320 4. Return links.
1321
1322 <span class="h3"><a class="selflink" name="appendix-B.2" href="#appendix-B.2">B.2</a>. Parsing a Link Field Value</span>
1323
1324 This algorithm parses zero or more comma-separated link-values from a
1325 Link header field. Given a string field_value, assuming ASCII
1326 encoding, it returns a list of link objects.
1327
1328 1. Let links be an empty list.
1329
1330 2. While field_value has content:
1331 1. Consume any leading OWS.
1332 2. If the first character is not "&lt;", return links.
1333 3. Discard the first character ("&lt;").
1334 4. Consume up to but not including the first "&gt;" character or
1335 end of field_value and let the result be target_string.
1336 5. If the next character is not "&gt;", return links.
1337 6. Discard the leading "&gt;" character.
1338 7. Let link_parameters be the result of Parsing Parameters
1339 (Appendix B.3) from field_value (consuming zero or more
1340 characters of it).
1341 8. Let target_uri be the result of relatively resolving (as per
1342 <a href="./rfc3986#section-5.2">[RFC3986], Section&nbsp;5.2</a>) target_string. Note that any base
1343 URI carried in the payload body is NOT used.
1344 9. Let relations_string be the second item of the first tuple
1345 of link_parameters whose first item matches the string "rel"
1346 or the empty string ("") if it is not present.
1347 10. Split relations_string on RWS (removing it in the process)
1348 into a list of string relation_types.
1349 11. Let context_string be the second item of the first tuple of
1350 link_parameters whose first item matches the string
1351 "anchor". If it is not present, context_string is the URL
1352 of the representation carrying the Link header <a href="./rfc7231#section-3.1.4.1">[RFC7231],
1353 Section&nbsp;3.1.4.1</a>, serialised as a URI. Where the URL is
1354 anonymous, context_string is null.
1355 12. Let context_uri be the result of relatively resolving (as
1356 per <a href="./rfc3986#section-5.2">[RFC3986], Section&nbsp;5.2</a>) context_string, unless
1357 context_string is null, in which case context is null. Note
1358 that any base URI carried in the payload body is NOT used.
1359 13. Let target_attributes be an empty list.
1360
1361
1362
1363
1364
1365
1366 <span class="grey">Nottingham Standards Track [Page 21]</span></pre>
1367 <hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-22" id="page-22" href="#page-22" class="invisible"> </a>
1368 <span class="grey"><a href="./rfc8288">RFC 8288</a> Web Linking October 2017</span>
1369
1370
1371 14. For each tuple (param_name, param_value) of link_parameters:
1372 1. If param_name matches "rel" or "anchor", skip this
1373 tuple.
1374 2. If param_name matches "media", "title", "title*", or
1375 "type" and target_attributes already contains a tuple
1376 whose first element matches the value of param_name,
1377 skip this tuple.
1378 3. Append (param_name, param_value) to target_attributes.
1379 15. Let star_param_names be the set of param_names in the
1380 (param_name, param_value) tuples of link_parameters where
1381 the last character of param_name is an asterisk ("*").
1382 16. For each star_param_name in star_param_names:
1383 1. Let base_param_name be star_param_name with the last
1384 character removed.
1385 2. If the implementation does not choose to support an
1386 internationalised form of a parameter named
1387 base_param_name for any reason (including, but not
1388 limited to, it being prohibited by the parameter's
1389 specification), remove all tuples from link_parameters
1390 whose first member is star_param_name, and skip to the
1391 next star_param_name.
1392 3. Remove all tuples from link_parameters whose first
1393 member is base_param_name.
1394 4. Change the first member of all tuples in link_parameters
1395 whose first member is star_param_name to
1396 base_param_name.
1397 17. For each relation_type in relation_types:
1398 1. Case-normalise relation_type to lowercase.
1399 2. Append a link object to links with the target
1400 target_uri, relation type of relation_type, context of
1401 context_uri, and target attributes target_attributes.
1402
1403 3. Return links.
1404
1405 <span class="h3"><a class="selflink" name="appendix-B.3" href="#appendix-B.3">B.3</a>. Parsing Parameters</span>
1406
1407 This algorithm parses the parameters from a header field value.
1408 Given input, an ASCII string, it returns a list of (string
1409 parameter_name, string parameter_value) tuples that it contains.
1410 input is modified to remove the parsed parameters.
1411
1412 1. Let parameters be an empty list.
1413
1414 2. While input has content:
1415 1. Consume any leading OWS.
1416 2. If the first character is not ";", return parameters.
1417 3. Discard the leading ";" character.
1418 4. Consume any leading OWS.
1419
1420
1421
1422 <span class="grey">Nottingham Standards Track [Page 22]</span></pre>
1423 <hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-23" id="page-23" href="#page-23" class="invisible"> </a>
1424 <span class="grey"><a href="./rfc8288">RFC 8288</a> Web Linking October 2017</span>
1425
1426
1427 5. Consume up to but not including the first BWS, "=", ";", or
1428 "," character, or up to the end of input, and let the result
1429 be parameter_name.
1430 6. Consume any leading BWS.
1431 7. If the next character is "=":
1432 1. Discard the leading "=" character.
1433 2. Consume any leading BWS.
1434 3. If the next character is DQUOTE, let parameter_value be
1435 the result of Parsing a Quoted String (Appendix B.4)
1436 from input (consuming zero or more characters of it).
1437 4. Else, consume the contents up to but not including the
1438 first ";" or "," character, or up to the end of input,
1439 and let the results be parameter_value.
1440 5. If the last character of parameter_name is an asterisk
1441 ("*"), decode parameter_value according to [<a href="./rfc8187" title="&quot;Indicating Character Encoding and Language for HTTP Header Field Parameters&quot;">RFC8187</a>].
1442 Continue processing input if an unrecoverable error is
1443 encountered.
1444 8. Else:
1445 1. Let parameter_value be an empty string.
1446 9. Case-normalise parameter_name to lowercase.
1447 10. Append (parameter_name, parameter_value) to parameters.
1448 11. Consume any leading OWS.
1449 12. If the next character is "," or the end of input, stop
1450 processing input and return parameters.
1451
1452 <span class="h3"><a class="selflink" name="appendix-B.4" href="#appendix-B.4">B.4</a>. Parsing a Quoted String</span>
1453
1454 This algorithm parses a quoted string, as per <a href="./rfc7230#section-3.2.6">[RFC7230],
1455 Section&nbsp;3.2.6</a>. Given input, an ASCII string, it returns an unquoted
1456 string. input is modified to remove the parsed string.
1457
1458 1. Let output be an empty string.
1459
1460 2. If the first character of input is not DQUOTE, return output.
1461
1462 3. Discard the first character.
1463
1464 4. While input has content:
1465 1. If the first character is a backslash ("\"):
1466 1. Discard the first character.
1467 2. If there is no more input, return output.
1468 3. Else, consume the first character and append it to
1469 output.
1470 2. Else, if the first character is DQUOTE, discard it and return
1471 output.
1472 3. Else, consume the first character and append it to output.
1473
1474 5. Return output.
1475
1476
1477
1478 <span class="grey">Nottingham Standards Track [Page 23]</span></pre>
1479 <hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-24" id="page-24" href="#page-24" class="invisible"> </a>
1480 <span class="grey"><a href="./rfc8288">RFC 8288</a> Web Linking October 2017</span>
1481
1482
1483 <span class="h2"><a class="selflink" name="appendix-C" href="#appendix-C">Appendix C</a>. Changes from <a href="./rfc5988">RFC 5988</a></span>
1484
1485 This specification has the following differences from its
1486 predecessor, <a href="./rfc5988">RFC 5988</a>:
1487
1488 o The initial relation type registrations were removed, since
1489 they've already been registered by <a href="./rfc5988">RFC 5988</a>.
1490 o The introduction has been shortened.
1491 o The "Link Relation Application Data" registry has been removed.
1492 o Incorporated errata.
1493 o Updated references.
1494 o Link cardinality was clarified.
1495 o Terminology was changed from "target IRI" and "context IRI" to
1496 "link target" and "link context", respectively.
1497 o Made assigning a URI to registered relation types serialisation
1498 specific.
1499 o Removed misleading statement that the Link header field is
1500 semantically equivalent to HTML and Atom links.
1501 o More carefully defined and used "link serialisations" and "link
1502 applications."
1503 o Clarified the cardinality of target attributes (generically and
1504 for "type").
1505 o Corrected the default link context for the Link header field, to
1506 be dependent upon the identity of the representation (as per
1507 <a href="./rfc7231">RFC 7231</a>).
1508 o Defined a suggested parsing algorithm for the Link header.
1509 o The value space of target attributes and their definition has been
1510 specified.
1511 o The ABNF has been updated to be compatible with [<a href="./rfc7230" title="&quot;Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing&quot;">RFC7230</a>]. In
1512 particular, whitespace is now explicit.
1513 o Some parameters on the HTTP header field can now appear as a
1514 token.
1515 o Parameters on the HTTP header can now be valueless.
1516 o Handling of quoted strings is now defined by [<a href="./rfc7230" title="&quot;Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing&quot;">RFC7230</a>].
1517 o The "type" header field parameter now needs to be quoted (as
1518 "token" does not allow "/").
1519
1520 Author's Address
1521
1522 Mark Nottingham
1523
1524 Email: mnot@mnot.net
1525 URI: <a href="https://www.mnot.net/">https://www.mnot.net/</a>
1526
1527
1528
1529
1530
1531
1532
1533
1534 Nottingham Standards Track [Page 24]
1535
1536 </pre><br />
1537 <span class="noprint"><small><small>Html markup produced by rfcmarkup 1.129d, available from
1538 <a href="https://tools.ietf.org/tools/rfcmarkup/">https://tools.ietf.org/tools/rfcmarkup/</a>
1539 </small></small></span>
1540 </div>
1541 </body>
1542 </html>