rfc8288.txt | rfc8288.txt | |||
---|---|---|---|---|
skipping to change at page 2, line 19 | skipping to change at page 3, line 7 | |||
modifications of such material outside the IETF Standards Process. | modifications of such material outside the IETF Standards Process. | |||
Without obtaining an adequate license from the person(s) controlling | Without obtaining an adequate license from the person(s) controlling | |||
the copyright in such materials, this document may not be modified | the copyright in such materials, this document may not be modified | |||
outside the IETF Standards Process, and derivative works of it may | outside the IETF Standards Process, and derivative works of it may | |||
not be created outside the IETF Standards Process, except to format | not be created outside the IETF Standards Process, except to format | |||
it for publication as an RFC or to translate it into languages other | it for publication as an RFC or to translate it into languages other | |||
than English. | than English. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
1.1. Notational Conventions . . . . . . . . . . . . . . . . . 3 | 1.1. Notational Conventions . . . . . . . . . . . . . . . . . 4 | |||
1.2. Conformance and Error Handling . . . . . . . . . . . . . 3 | 1.2. Conformance and Error Handling . . . . . . . . . . . . . 4 | |||
2. Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
2.1. Link Relation Types . . . . . . . . . . . . . . . . . . . 5 | 2.1. Link Relation Types . . . . . . . . . . . . . . . . . . . 6 | |||
2.1.1. Registered Relation Types . . . . . . . . . . . . . . 5 | 2.1.1. Registered Relation Types . . . . . . . . . . . . . . 6 | |||
2.1.2. Extension Relation Types . . . . . . . . . . . . . . 7 | 2.1.2. Extension Relation Types . . . . . . . . . . . . . . 8 | |||
2.2. Target Attributes . . . . . . . . . . . . . . . . . . . . 7 | 2.2. Target Attributes . . . . . . . . . . . . . . . . . . . . 9 | |||
3. Link Serialisation in HTTP Headers . . . . . . . . . . . . . 8 | 3. Link Serialisation in HTTP Headers . . . . . . . . . . . . . 9 | |||
3.1. Link Target . . . . . . . . . . . . . . . . . . . . . . . 9 | 3.1. Link Target . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
3.2. Link Context . . . . . . . . . . . . . . . . . . . . . . 9 | 3.2. Link Context . . . . . . . . . . . . . . . . . . . . . . 10 | |||
3.3. Relation Type . . . . . . . . . . . . . . . . . . . . . . 9 | 3.3. Relation Type . . . . . . . . . . . . . . . . . . . . . . 11 | |||
3.4. Target Attributes . . . . . . . . . . . . . . . . . . . . 10 | 3.4. Target Attributes . . . . . . . . . . . . . . . . . . . . 11 | |||
3.4.1. Serialisation-Defined Attributes . . . . . . . . . . 10 | 3.4.1. Serialisation-Defined Attributes . . . . . . . . . . 11 | |||
3.4.2. Extension Attributes . . . . . . . . . . . . . . . . 12 | 3.4.2. Extension Attributes . . . . . . . . . . . . . . . . 13 | |||
3.5. Link Header Field Examples . . . . . . . . . . . . . . . 12 | 3.5. Link Header Field Examples . . . . . . . . . . . . . . . 13 | |||
4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 | 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | |||
4.1. Link HTTP Header Field Registration . . . . . . . . . . . 13 | 4.1. Link HTTP Header Field Registration . . . . . . . . . . . 14 | |||
4.2. Link Relation Type Registry . . . . . . . . . . . . . . . 13 | 4.2. Link Relation Type Registry . . . . . . . . . . . . . . . 14 | |||
4.3. Link Relation Application Data Registry . . . . . . . . . 14 | 4.3. Link Relation Application Data Registry . . . . . . . . . 15 | |||
5. Security Considerations . . . . . . . . . . . . . . . . . . . 14 | 5. Security Considerations . . . . . . . . . . . . . . . . . . . 15 | |||
6. Internationalisation Considerations . . . . . . . . . . . . . 14 | 6. Internationalisation Considerations . . . . . . . . . . . . . 16 | |||
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
7.1. Normative References . . . . . . . . . . . . . . . . . . 15 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 16 | |||
7.2. Informative References . . . . . . . . . . . . . . . . . 16 | 7.2. Informative References . . . . . . . . . . . . . . . . . 17 | |||
Appendix A. Notes on Other Link Serialisations . . . . . . . . . 17 | Appendix A. Notes on Other Link Serialisations . . . . . . . . . 19 | |||
A.1. Link Serialisation in HTML . . . . . . . . . . . . . . . 17 | A.1. Link Serialisation in HTML . . . . . . . . . . . . . . . 19 | |||
A.2. Link Serialisation in Atom . . . . . . . . . . . . . . . 17 | A.2. Link Serialisation in Atom . . . . . . . . . . . . . . . 19 | |||
Appendix B. Algorithms for Parsing Link Header Fields . . . . . 18 | Appendix B. Algorithms for Parsing Link Header Fields . . . . . 20 | |||
B.1. Parsing a Header Set for Links . . . . . . . . . . . . . 18 | B.1. Parsing a Header Set for Links . . . . . . . . . . . . . 20 | |||
B.2. Parsing a Link Field Value . . . . . . . . . . . . . . . 19 | B.2. Parsing a Link Field Value . . . . . . . . . . . . . . . 21 | |||
B.3. Parsing Parameters . . . . . . . . . . . . . . . . . . . 20 | B.3. Parsing Parameters . . . . . . . . . . . . . . . . . . . 22 | |||
B.4. Parsing a Quoted String . . . . . . . . . . . . . . . . . 21 | B.4. Parsing a Quoted String . . . . . . . . . . . . . . . . . 23 | |||
Appendix C. Changes from RFC 5988 . . . . . . . . . . . . . . . 22 | Appendix C. Changes from RFC 5988 . . . . . . . . . . . . . . . 24 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 22 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
1. Introduction | 1. Introduction | |||
This specification defines a model for the relationships between | This specification defines a model for the relationships between | |||
resources on the Web ("links") and the type of those relationships | resources on the Web ("links") and the type of those relationships | |||
("link relation types"). | ("link relation types"). | |||
HTML [W3C.REC-html5-20141028] and Atom [RFC4287] both have well- | HTML [W3C.REC-html5-20141028] and Atom [RFC4287] both have well- | |||
defined concepts of linking; Section 2 generalises this into a | defined concepts of linking; Section 2 generalises this into a | |||
framework that encompasses linking in these formats and (potentially) | framework that encompasses linking in these formats and (potentially) | |||
skipping to change at page 16, line 30 | skipping to change at page 17, line 35 | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
[RFC8187] Reschke, J., "Indicating Character Encoding and Language | [RFC8187] Reschke, J., "Indicating Character Encoding and Language | |||
for HTTP Header Field Parameters", RFC 8187, | for HTTP Header Field Parameters", RFC 8187, | |||
DOI 10.17487/RFC8187, September 2017, | DOI 10.17487/RFC8187, September 2017, | |||
<https://www.rfc-editor.org/info/rfc8187>. | <https://www.rfc-editor.org/info/rfc8187>. | |||
[W3C.REC-css3-mediaqueries-20120619] | [W3C.REC-css3-mediaqueries-20120619] | |||
Rivoal, F., "Media Queries", W3C Recommendation REC-css3- | Rivoal, F., "Media Queries", W3C Recommendation | |||
mediaqueries-20120619, June 2012, | REC-css3-mediaqueries-20120619, June 2012, | |||
<http://www.w3.org/TR/2012/ | <http://www.w3.org/TR/2012/ | |||
REC-css3-mediaqueries-20120619>. | REC-css3-mediaqueries-20120619>. | |||
7.2. Informative References | 7.2. Informative References | |||
[RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | [RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | |||
Extensions (MIME) Part Two: Media Types", RFC 2046, | Extensions (MIME) Part Two: Media Types", RFC 2046, | |||
DOI 10.17487/RFC2046, November 1996, | DOI 10.17487/RFC2046, November 1996, | |||
<https://www.rfc-editor.org/info/rfc2046>. | <https://www.rfc-editor.org/info/rfc2046>. | |||
skipping to change at page 19, line 7 | skipping to change at page 20, line 48 | |||
B.1. Parsing a Header Set for Links | B.1. Parsing a Header Set for Links | |||
This algorithm can be used to parse the Link header fields that a | This algorithm can be used to parse the Link header fields that a | |||
HTTP header set contains. Given a header_set of (string field_name, | HTTP header set contains. Given a header_set of (string field_name, | |||
string field_value) pairs, assuming ASCII encoding, it returns a list | string field_value) pairs, assuming ASCII encoding, it returns a list | |||
of link objects. | of link objects. | |||
1. Let field_values be a list containing the members of header_set | 1. Let field_values be a list containing the members of header_set | |||
whose field_name is a case-insensitive match for "link". | whose field_name is a case-insensitive match for "link". | |||
2. Let links be an empty list. | 2. Let links be an empty list. | |||
3. For each field_value in field_values: | ||||
3. For each field_value in field_values: | ||||
1. Let value_links be the result of Parsing a Link Field Value | 1. Let value_links be the result of Parsing a Link Field Value | |||
(Appendix B.2) from field_value. | (Appendix B.2) from field_value. | |||
2. Append each member of value_links to links. | 2. Append each member of value_links to links. | |||
4. Return links. | 4. Return links. | |||
B.2. Parsing a Link Field Value | B.2. Parsing a Link Field Value | |||
This algorithm parses zero or more comma-separated link-values from a | This algorithm parses zero or more comma-separated link-values from a | |||
Link header field. Given a string field_value, assuming ASCII | Link header field. Given a string field_value, assuming ASCII | |||
encoding, it returns a list of link objects. | encoding, it returns a list of link objects. | |||
1. Let links be an empty list. | 1. Let links be an empty list. | |||
2. While field_value has content: | ||||
2. While field_value has content: | ||||
1. Consume any leading OWS. | 1. Consume any leading OWS. | |||
2. If the first character is not "<", return links. | 2. If the first character is not "<", return links. | |||
3. Discard the first character ("<"). | 3. Discard the first character ("<"). | |||
4. Consume up to but not including the first ">" character or | 4. Consume up to but not including the first ">" character or | |||
end of field_value and let the result be target_string. | end of field_value and let the result be target_string. | |||
5. If the next character is not ">", return links. | 5. If the next character is not ">", return links. | |||
6. Discard the leading ">" character. | 6. Discard the leading ">" character. | |||
7. Let link_parameters be the result of Parsing Parameters | 7. Let link_parameters be the result of Parsing Parameters | |||
(Appendix B.3) from field_value (consuming zero or more | (Appendix B.3) from field_value (consuming zero or more | |||
characters of it). | characters of it). | |||
skipping to change at page 20, line 49 | skipping to change at page 22, line 47 | |||
3. Return links. | 3. Return links. | |||
B.3. Parsing Parameters | B.3. Parsing Parameters | |||
This algorithm parses the parameters from a header field value. | This algorithm parses the parameters from a header field value. | |||
Given input, an ASCII string, it returns a list of (string | Given input, an ASCII string, it returns a list of (string | |||
parameter_name, string parameter_value) tuples that it contains. | parameter_name, string parameter_value) tuples that it contains. | |||
input is modified to remove the parsed parameters. | input is modified to remove the parsed parameters. | |||
1. Let parameters be an empty list. | 1. Let parameters be an empty list. | |||
2. While input has content: | ||||
2. While input has content: | ||||
1. Consume any leading OWS. | 1. Consume any leading OWS. | |||
2. If the first character is not ";", return parameters. | 2. If the first character is not ";", return parameters. | |||
3. Discard the leading ";" character. | 3. Discard the leading ";" character. | |||
4. Consume any leading OWS. | 4. Consume any leading OWS. | |||
5. Consume up to but not including the first BWS, "=", ";", or | 5. Consume up to but not including the first BWS, "=", ";", or | |||
"," character, or up to the end of input, and let the result | "," character, or up to the end of input, and let the result | |||
be parameter_name. | be parameter_name. | |||
6. Consume any leading BWS. | 6. Consume any leading BWS. | |||
7. If the next character is "=": | 7. If the next character is "=": | |||
1. Discard the leading "=" character. | 1. Discard the leading "=" character. | |||
2. Consume any leading BWS. | 2. Consume any leading BWS. | |||
3. If the next character is DQUOTE, let parameter_value be | 3. If the next character is DQUOTE, let parameter_value be | |||
the result of Parsing a Quoted String (Appendix B.4) | the result of Parsing a Quoted String (Appendix B.4) | |||
from input (consuming zero or more characters of it). | from input (consuming zero or more characters of it). | |||
4. Else, consume the contents up to but not including the | 4. Else, consume the contents up to but not including the | |||
first ";" or "," character, or up to the end of input, | first ";" or "," character, or up to the end of input, | |||
and let the results be parameter_value. | and let the results be parameter_value. | |||
5. If the last character of parameter_name is an asterisk | 5. If the last character of parameter_name is an asterisk | |||
("*"), decode parameter_value according to [RFC8187]. | ("*"), decode parameter_value according to [RFC8187]. | |||
skipping to change at page 21, line 41 | skipping to change at page 23, line 37 | |||
12. If the next character is "," or the end of input, stop | 12. If the next character is "," or the end of input, stop | |||
processing input and return parameters. | processing input and return parameters. | |||
B.4. Parsing a Quoted String | B.4. Parsing a Quoted String | |||
This algorithm parses a quoted string, as per [RFC7230], | This algorithm parses a quoted string, as per [RFC7230], | |||
Section 3.2.6. Given input, an ASCII string, it returns an unquoted | Section 3.2.6. Given input, an ASCII string, it returns an unquoted | |||
string. input is modified to remove the parsed string. | string. input is modified to remove the parsed string. | |||
1. Let output be an empty string. | 1. Let output be an empty string. | |||
2. If the first character of input is not DQUOTE, return output. | 2. If the first character of input is not DQUOTE, return output. | |||
3. Discard the first character. | 3. Discard the first character. | |||
4. While input has content: | ||||
4. While input has content: | ||||
1. If the first character is a backslash ("\"): | 1. If the first character is a backslash ("\"): | |||
1. Discard the first character. | 1. Discard the first character. | |||
2. If there is no more input, return output. | 2. If there is no more input, return output. | |||
3. Else, consume the first character and append it to | 3. Else, consume the first character and append it to | |||
output. | output. | |||
2. Else, if the first character is DQUOTE, discard it and return | 2. Else, if the first character is DQUOTE, discard it and return | |||
output. | output. | |||
3. Else, consume the first character and append it to output. | 3. Else, consume the first character and append it to output. | |||
5. Return output. | 5. Return output. | |||
Appendix C. Changes from RFC 5988 | Appendix C. Changes from RFC 5988 | |||
This specification has the following differences from its | This specification has the following differences from its | |||
predecessor, RFC 5988: | predecessor, RFC 5988: | |||
o The initial relation type registrations were removed, since | o The initial relation type registrations were removed, since | |||
they've already been registered by RFC 5988. | they've already been registered by RFC 5988. | |||
o The introduction has been shortened. | o The introduction has been shortened. | |||
End of changes. 20 change blocks. | ||||
45 lines changed or deleted | 47 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |