| < draft-nottingham-rfc7320bis-00.txt | draft-nottingham-rfc7320bis-01.txt > | |||
|---|---|---|---|---|
| Network Working Group M. Nottingham | Network Working Group M. Nottingham | |||
| Internet-Draft August 20, 2019 | Internet-Draft August 27, 2019 | |||
| Obsoletes: 7320 (if approved) | Obsoletes: 7320 (if approved) | |||
| Updates: 3986 (if approved) | Updates: 3986 (if approved) | |||
| Intended status: Best Current Practice | Intended status: Best Current Practice | |||
| Expires: February 21, 2020 | Expires: February 28, 2020 | |||
| URI Design and Ownership | URI Design and Ownership | |||
| draft-nottingham-rfc7320bis-00 | draft-nottingham-rfc7320bis-01 | |||
| Abstract | Abstract | |||
| Section 1.1.1 of RFC 3986 defines URI syntax as "a federated and | Section 1.1.1 of RFC 3986 defines URI syntax as "a federated and | |||
| extensible naming system wherein each scheme's specification may | extensible naming system wherein each scheme's specification may | |||
| further restrict the syntax and semantics of identifiers using that | further restrict the syntax and semantics of identifiers using that | |||
| scheme." In other words, the structure of a URI is defined by its | scheme." In other words, the structure of a URI is defined by its | |||
| scheme. While it is common for schemes to further delegate their | scheme. While it is common for schemes to further delegate their | |||
| substructure to the URI's owner, publishing independent standards | substructure to the URI's owner, publishing independent standards | |||
| that mandate particular forms of URI substructure is inappropriate, | that mandate particular forms of substructure in URIs is often | |||
| because that essentially usurps ownership. This document further | problematic. | |||
| describes this problematic practice and provides some acceptable | ||||
| alternatives for use in standards. | This document provides guidance on the specification of URI | |||
| substructure in standards. | ||||
| Note to Readers | Note to Readers | |||
| _RFC EDITOR: please remove this section before publication_ | _RFC EDITOR: please remove this section before publication_ | |||
| This is a proposed revision of RFC7320, aka BCP190. The -00 draft is | This is a proposed revision of RFC7320, aka BCP190. The -00 draft is | |||
| a copy of the published RFC; subsequent revisions will update it. | a copy of the published RFC; subsequent revisions will update it. | |||
| The issues list for this draft can be found at | The issues list for this draft can be found at | |||
| https://github.com/mnot/I-D/labels/rfc7320 [1]. | https://github.com/mnot/I-D/labels/rfc7320bis [1]. | |||
| The most recent (often, unpublished) draft is at | The most recent (often, unpublished) draft is at | |||
| https://mnot.github.io/I-D/rfc7320/ [2]. | https://mnot.github.io/I-D/rfc7320bis/ [2]. | |||
| Recent changes are listed at https://github.com/mnot/I-D/commits/gh- | Recent changes are listed at https://github.com/mnot/I-D/commits/gh- | |||
| pages/rfc7320 [3]. | pages/rfc7320bis [3]. | |||
| See also the draft's current status in the IETF datatracker, at | See also the draft's current status in the IETF datatracker, at | |||
| https://datatracker.ietf.org/doc/draft-nottingham-rfc7320/ [4]. | https://datatracker.ietf.org/doc/draft-nottingham-rfc7320bis/ [4]. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on February 21, 2020. | This Internet-Draft will expire on February 28, 2020. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2019 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 40 ¶ | skipping to change at page 2, line 45 ¶ | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 1.1. Intended Audience . . . . . . . . . . . . . . . . . . . . 4 | 1.1. Intended Audience . . . . . . . . . . . . . . . . . . . . 4 | |||
| 1.2. Notational Conventions . . . . . . . . . . . . . . . . . 5 | 1.2. Notational Conventions . . . . . . . . . . . . . . . . . 5 | |||
| 2. Best Current Practices for Standardizing Structured URIs . . 5 | 2. Best Current Practices for Standardizing Structured URIs . . 5 | |||
| 2.1. URI Schemes . . . . . . . . . . . . . . . . . . . . . . . 5 | 2.1. URI Schemes . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 2.2. URI Authorities . . . . . . . . . . . . . . . . . . . . . 5 | 2.2. URI Authorities . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 2.3. URI Paths . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2.3. URI Paths . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 2.4. URI Queries . . . . . . . . . . . . . . . . . . . . . . . 6 | 2.4. URI Queries . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 2.5. URI Fragment Identifiers . . . . . . . . . . . . . . . . 7 | 2.5. URI Fragment Identifiers . . . . . . . . . . . . . . . . 7 | |||
| 3. Alternatives to Specifying Structure in URIs . . . . . . . . 7 | 3. Alternatives to Specifying Structure in URIs . . . . . . . . 7 | |||
| 4. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 6.1. Normative References . . . . . . . . . . . . . . . . . . 8 | 6.1. Normative References . . . . . . . . . . . . . . . . . . 8 | |||
| 6.2. Informative References . . . . . . . . . . . . . . . . . 8 | 6.2. Informative References . . . . . . . . . . . . . . . . . 8 | |||
| 6.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 6.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . 9 | Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . 9 | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 9 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 1. Introduction | 1. Introduction | |||
| URIs [RFC3986] very often include structured application data. This | URIs [RFC3986] very often include structured application data. This | |||
| might include artifacts from filesystems (often occurring in the path | might include artifacts from filesystems (often occurring in the path | |||
| component) and user information (often in the query component). In | component) and user information (often in the query component). In | |||
| some cases, there can even be application-specific data in the | some cases, there can even be application-specific data in the | |||
| authority component (e.g., some applications are spread across | authority component (e.g., some applications are spread across | |||
| several hostnames to enable a form of partitioning or dispatch). | several hostnames to enable a form of partitioning or dispatch). | |||
| Furthermore, constraints upon the structure of URIs can be imposed by | Implementations can impose further constraints upon the structure of | |||
| an implementation; for example, many Web servers use the filename | URIs; for example, many Web servers use the filename extension of the | |||
| extension of the last path segment to determine the media type of the | last path segment to determine the media type of the response. | |||
| response. Likewise, prepackaged applications often have highly | Likewise, prepackaged applications often have highly structured URIs | |||
| structured URIs that can only be changed in limited ways (often, just | that can only be changed in limited ways (often, just the hostname | |||
| the hostname and port on which they are deployed). | and port on which they are deployed). | |||
| Because the owner of the URI (as defined in [webarch] | Because the owner of the URI (as defined in [webarch] | |||
| Section 2.2.2.1) is choosing to use the server or the application, | Section 2.2.2.1) is choosing to use the server or the application, | |||
| this can be seen as reasonable delegation of authority. However, | this can be seen as reasonable delegation of authority. However, | |||
| when such conventions are mandated by a party other than the owner, | when such conventions are mandated by a party other than the owner, | |||
| it can have several potentially detrimental effects: | it can have several potentially detrimental effects: | |||
| o Collisions - As more ad hoc conventions for URI structure become | o Collisions - As more ad hoc conventions for URI structure become | |||
| standardized, it becomes more likely that there will be collisions | standardized, it becomes more likely that there will be collisions | |||
| between them (especially considering that servers, applications, | between them (especially considering that servers, applications, | |||
| skipping to change at page 4, line 11 ¶ | skipping to change at page 4, line 16 ¶ | |||
| o Client Assumptions - When conventions are standardized, some | o Client Assumptions - When conventions are standardized, some | |||
| clients will inevitably assume that the standards are in use when | clients will inevitably assume that the standards are in use when | |||
| those conventions are seen. This can lead to interoperability | those conventions are seen. This can lead to interoperability | |||
| problems; for example, if a specification documents that the "sig" | problems; for example, if a specification documents that the "sig" | |||
| URI query parameter indicates that its payload is a cryptographic | URI query parameter indicates that its payload is a cryptographic | |||
| signature for the URI, it can lead to undesirable behavior. | signature for the URI, it can lead to undesirable behavior. | |||
| Publishing a standard that constrains an existing URI structure in | Publishing a standard that constrains an existing URI structure in | |||
| ways that aren't explicitly allowed by [RFC3986] (usually, by | ways that aren't explicitly allowed by [RFC3986] (usually, by | |||
| updating the URI scheme definition) is inappropriate, because the | updating the URI scheme definition) is therefore sometimes | |||
| structure of a URI needs to be firmly under the control of its owner, | problematic, both for these reasons, and because the structure of a | |||
| and the IETF (as well as other organizations) should not usurp it. | URI needs to be firmly under the control of its owner. | |||
| This document explains some best current practices for establishing | This document explains some best current practices for establishing | |||
| URI structures, conventions, and formats in standards. It also | URI structures, conventions, and formats in standards. It also | |||
| offers strategies for specifications to avoid violating these | offers strategies for specifications in Section 3. | |||
| guidelines in Section 3. | ||||
| 1.1. Intended Audience | 1.1. Intended Audience | |||
| This document's requirements target the authors of specifications | This document's guidelines and requirements target the authors of | |||
| that constrain the syntax or structure of URIs or parts of them. Two | specifications that constrain the syntax or structure of URIs or | |||
| classes of such specifications are called out specifically: | parts of them. Two classes of such specifications are called out | |||
| specifically: | ||||
| o Protocol Extensions ("extensions") - specifications that offer new | o Protocol Extensions ("extensions") - specifications that offer new | |||
| capabilities that could apply to any identifier, or to a large | capabilities that could apply to any identifier, or to a large | |||
| subset of possible identifiers; e.g., a new signature mechanism | subset of possible identifiers; e.g., a new signature mechanism | |||
| for 'http' URIs, or metadata for any URI. | for 'http' URIs, metadata for any URI, or a new format. | |||
| o Applications Using URIs ("applications") - specifications that use | o Applications Using URIs ("applications") - specifications that use | |||
| URIs to meet specific needs; e.g., an HTTP interface to particular | URIs to meet specific needs; e.g., an HTTP interface to particular | |||
| information on a host. | information on a host. | |||
| Requirements that target the generic class "Specifications" apply to | Requirements that target the generic class "specifications" apply to | |||
| all specifications, including both those enumerated above and others. | all specifications, including both those enumerated above and others. | |||
| Note that this specification ought not be interpreted as preventing | Note that this specification ought not be interpreted as preventing | |||
| the allocation of control of URIs by parties that legitimately own | the allocation of control of URIs by parties that legitimately own | |||
| them, or have delegated that ownership; for example, a specification | them, or have delegated that ownership; for example, a specification | |||
| might legitimately define the semantics of a URI on IANA's Web site | might legitimately define the semantics of a URI on IANA's Web site | |||
| as part of the establishment of a registry. | as part of the establishment of a registry. | |||
| There may be existing IETF specifications that already deviate from | There may be existing IETF specifications that already deviate from | |||
| the guidance in this document. In these cases, it is up to the | the guidance in this document. In these cases, it is up to the | |||
| relevant communities (i.e., those of the URI scheme as well as that | relevant communities (i.e., those of the URI scheme as well as that | |||
| which produced the specification in question) to determine an | which produced the specification in question) to determine an | |||
| appropriate outcome; e.g., updating the scheme definition, or | appropriate outcome; e.g., updating the scheme definition, or | |||
| changing the specification. | changing the specification. | |||
| 1.2. Notational Conventions | 1.2. Notational Conventions | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| document are to be interpreted as described in [RFC2119]. | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | ||||
| capitals, as shown here. | ||||
| 2. Best Current Practices for Standardizing Structured URIs | 2. Best Current Practices for Standardizing Structured URIs | |||
| This section updates [RFC3986] by setting limitations on how other | This section updates [RFC3986] by advising other specifications how | |||
| specifications may define structure and semantics within URIs. Best | they should define structure and semantics within URIs. Best | |||
| practices differ depending on the URI component, as described below. | practices differ depending on the URI component, as described below. | |||
| 2.1. URI Schemes | 2.1. URI Schemes | |||
| Applications and extensions MAY require use of specific URI | Applications and extensions can require use of specific URI | |||
| scheme(s); for example, it is perfectly acceptable to require that an | scheme(s); for example, it is perfectly acceptable to require that an | |||
| application support 'http' and 'https' URIs. However, applications | application support 'http' and 'https' URIs. However, applications | |||
| SHOULD NOT preclude the use of other URI schemes in the future, | ought not preclude the use of other URI schemes in the future, unless | |||
| unless they are clearly only usable with the nominated schemes. | they are clearly only usable with the nominated schemes. | |||
| A specification that defines substructure within a specific URI | A specification that defines substructure for URI schemes overall | |||
| scheme MUST do so in the defining document for that URI scheme. A | (e.g., a prefix or suffix for URI scheme names) MUST do so by | |||
| specification that defines substructure for URI schemes overall MUST | modifying [BCP115] (an exceptional circumstance). | |||
| do so by modifying [BCP115] (an exceptional circumstance). | ||||
| 2.2. URI Authorities | 2.2. URI Authorities | |||
| Scheme definitions define the presence, format and semantics of an | Scheme definitions define the presence, format and semantics of an | |||
| authority component in URIs; all other specifications MUST NOT | authority component in URIs; all other specifications MUST NOT | |||
| constrain, or define the structure or the semantics for URI | constrain, or define the structure or the semantics for URI | |||
| authorities, unless they update the scheme registration itself. | authorities, unless they update the scheme registration itself, or | |||
| the structures it relies upon (e.g., DNS name syntax, defined in | ||||
| Section 3.5 of [RFC1034]). | ||||
| For example, an extension or application ought not say that the "foo" | For example, an extension or application cannot say that the "foo" | |||
| prefix in "foo_app.example.com" is meaningful or triggers special | prefix in "http://foo_app.example.com" is meaningful or triggers | |||
| handling in URIs. | special handling in URIs, unless they update either the HTTP URI | |||
| scheme, or the DNS hostname syntax. | ||||
| However, applications MAY nominate or constrain the port they use, | Applications can nominate or constrain the port they use, when | |||
| when applicable. For example, BarApp could run over port nnnn | applicable. For example, BarApp could run over port nnnn (provided | |||
| (provided that it is properly registered). | that it is properly registered). | |||
| 2.3. URI Paths | 2.3. URI Paths | |||
| Scheme definitions define the presence, format, and semantics of a | Scheme definitions define the presence, format, and semantics of a | |||
| path component in URIs; all other specifications MUST NOT constrain, | path component in URIs, although these are often delegated to the | |||
| or define the structure or the semantics for any path component. | application(s) in a given deployment. | |||
| The only exception to this requirement is registered "well-known" | To avoid collisions, rigidity, and erroneous client assumptions, | |||
| URIs, as specified by [RFC5785]. See that document for a description | specifications MUST NOT define a fixed prefix for their URI paths; | |||
| for example, "/myapp", unless allowed by the scheme definition. | ||||
| One such exception to this requirement is registered "well-known" | ||||
| URIs, as specified by [RFC8615]. See that document for a description | ||||
| of the applicability of that mechanism. | of the applicability of that mechanism. | |||
| For example, an application ought not specify a fixed URI path | Note that this does not apply to applications defining a structure of | |||
| "/myapp", since this usurps the host's control of that space. | URIs paths "under" a resource under control of the server. Because | |||
| the prefix is under control of the party deploying the application, | ||||
| collisions and rigidity are avoided, and the risk of erroneous client | ||||
| assumptions is reduced. | ||||
| Specifying a fixed path relative to another (e.g., {whatever}/myapp) | For example, an application might define "app_root" as a deployment- | |||
| is also bad practice (even if "whatever" is discovered as suggested | controlled URI prefix. Application-defined resources might then be | |||
| in Section 3); while doing so might prevent collisions, it does not | assumed to be present at "{app_root}/foo" and "{app_root}/bar". | |||
| avoid the potential for operational difficulties (for example, an | ||||
| implementation that prefers to use query processing instead, because | Extensions MUST NOT define a structure within individual URI | |||
| of implementation constraints). | components (e.g., a prefix or suffix), again to avoid collisions and | |||
| erroneous client assumptions. | ||||
| 2.4. URI Queries | 2.4. URI Queries | |||
| The presence, format and semantics of the query component of URIs is | The presence, format and semantics of the query component of URIs is | |||
| dependent upon many factors, and MAY be constrained by a scheme | dependent upon many factors, and can be constrained by a scheme | |||
| definition. Often, they are determined by the implementation of a | definition. Often, they are determined by the implementation of a | |||
| resource itself. | resource itself. | |||
| Applications MUST NOT directly specify the syntax of queries, as this | Applications can specify the syntax of queries for the resources | |||
| can cause operational difficulties for deployments that do not | under their control. However, doing so can cause operational | |||
| support a particular form of a query. For example, a site may wish | difficulties for deployments that do not support a particular form of | |||
| to support an application using "static" files that do not support | a query. For example, a site may wish to support an application | |||
| query parameters. | using "static" files that do not support query parameters. | |||
| Extensions MUST NOT constrain the format or semantics of queries. | ||||
| For example, an extension that indicates that all query parameters | Extensions MUST NOT constrain the format or semantics of queries, to | |||
| with the name "sig" indicate a cryptographic signature would collide | avoid collisions and erroneous client assumptions. For example, an | |||
| with potentially preexisting query parameters on sites and lead | extension that indicates that all query parameters with the name | |||
| clients to assume that any matching query parameter is a signature. | "sig" indicate a cryptographic signature would collide with | |||
| potentially preexisting query parameters on sites and lead clients to | ||||
| assume that any matching query parameter is a signature. | ||||
| HTML [W3C.REC-html401-19991224] constrains the syntax of query | HTML [W3C.REC-html401-19991224] constrains the syntax of query | |||
| strings used in form submission. New form languages SHOULD NOT | strings used in form submission. New form languages are encouraged | |||
| emulate it, but instead allow creation of a broader variety of URIs | to allow creation of a broader variety of URIs (e.g., by allowing the | |||
| (e.g., by allowing the form to create new path components, and so | form to create new path components, and so forth). | |||
| forth). | ||||
| Note that "well-known" URIs (see [RFC5785]) MAY constrain their own | ||||
| query syntax, since these name spaces are effectively delegated to | ||||
| the registering party. | ||||
| 2.5. URI Fragment Identifiers | 2.5. URI Fragment Identifiers | |||
| Media type definitions (as per [RFC6838]) SHOULD specify the fragment | Section 3.5 of [RFC3986] specifies fragment identiers' syntax and | |||
| identifier syntax(es) to be used with them; other specifications MUST | semantics as being dependent upon the media type of a potentially | |||
| NOT define structure within the fragment identifier, unless they are | retrieved resource. As a result, other specifications MUST NOT | |||
| explicitly defining one for reuse by media type definitions. | define structure within the fragment identifier, unless they are | |||
| explicitly defining one for reuse by media types in their definitions | ||||
| (for example, as JSON Pointer [RFC6901] does). | ||||
| For example, an application that defines common fragment identifiers | An application that defines common fragment identifiers across media | |||
| across media types not controlled by it would engender | types not controlled by it would engender interoperability problems | |||
| interoperability problems with handlers for those media types | with handlers for those media types (because the new, non-standard | |||
| (because the new, non-standard syntax is not expected). | syntax is not expected). | |||
| 3. Alternatives to Specifying Structure in URIs | 3. Alternatives to Specifying Structure in URIs | |||
| Given the issues described in Section 1, the most successful strategy | Given the issues described in Section 1, the most successful strategy | |||
| for applications and extensions that wish to use URIs is to use them | for applications and extensions that wish to use URIs is to use them | |||
| in the fashion they were designed: as links that are exchanged as | in the fashion they were designed: as links that are exchanged as | |||
| part of the protocol, rather than statically specified syntax. | part of the protocol, rather than statically specified syntax. | |||
| Several existing specifications can aid in this. | Several existing specifications can aid in this. | |||
| [RFC5988] specifies relation types for Web links. By providing a | [RFC8288] specifies relation types for Web links. By providing a | |||
| framework for linking on the Web, where every link has a relation | framework for linking on the Web, where every link has a relation | |||
| type, context and target, it allows applications to define a link's | type, context and target, it allows applications to define a link's | |||
| semantics and connectivity. | semantics and connectivity. | |||
| [RFC6570] provides a standard syntax for URI Templates that can be | [RFC6570] provides a standard syntax for URI Templates that can be | |||
| used to dynamically insert application-specific variables into a URI | used to dynamically insert application-specific variables into a URI | |||
| to enable such applications while avoiding impinging upon URI owners' | to enable such applications while avoiding impinging upon URI owners' | |||
| control of them. | control of them. | |||
| [RFC5785] allows specific paths to be 'reserved' for standard use on | [RFC8615] allows specific paths to be 'reserved' for standard use on | |||
| URI schemes that opt into that mechanism ('http' and 'https' by | URI schemes that opt into that mechanism ('http' and 'https' by | |||
| default). Note, however, that this is not a general "escape valve" | default). Note, however, that this is not a general "escape valve" | |||
| for applications that need structured URIs; see that specification | for applications that need structured URIs; see that specification | |||
| for more information. | for more information. | |||
| Specifying more elaborate structures in an attempt to avoid | Specifying more elaborate structures in an attempt to avoid | |||
| collisions is not an acceptable solution, and does not address the | collisions is not an acceptable solution, and does not address the | |||
| issues in Section 1. For example, prefixing query parameters with | issues in Section 1. For example, prefixing query parameters with | |||
| "myapp_" does not help, because the prefix itself is subject to the | "myapp_" does not help, because the prefix itself is subject to the | |||
| risk of collision (since it is not "reserved"). | risk of collision (since it is not "reserved"). | |||
| skipping to change at page 8, line 25 ¶ | skipping to change at page 8, line 32 ¶ | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | |||
| Resource Identifier (URI): Generic Syntax", STD 66, | Resource Identifier (URI): Generic Syntax", STD 66, | |||
| RFC 3986, DOI 10.17487/RFC3986, January 2005, | RFC 3986, DOI 10.17487/RFC3986, January 2005, | |||
| <https://www.rfc-editor.org/info/rfc3986>. | <https://www.rfc-editor.org/info/rfc3986>. | |||
| [RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| Specifications and Registration Procedures", BCP 13, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| RFC 6838, DOI 10.17487/RFC6838, January 2013, | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| <https://www.rfc-editor.org/info/rfc6838>. | ||||
| [webarch] Jacobs, I. and N. Walsh, "Architecture of the World Wide | [webarch] Jacobs, I. and N. Walsh, "Architecture of the World Wide | |||
| Web, Volume One", December 2004, | Web, Volume One", December 2004, | |||
| <http://www.w3.org/TR/2004/REC-webarch-20041215>. | <http://www.w3.org/TR/2004/REC-webarch-20041215>. | |||
| 6.2. Informative References | 6.2. Informative References | |||
| [BCP115] Hansen, T., Hardie, T., and L. Masinter, "Guidelines and | [BCP115] Hansen, T., Hardie, T., and L. Masinter, "Guidelines and | |||
| Registration Procedures for New URI Schemes", RFC 4395, | Registration Procedures for New URI Schemes", BCP 115, | |||
| BCP 115, February 2006, | RFC 4395, February 2006, | |||
| <https://tools.ietf.org/html/bcp115>. | <https://tools.ietf.org/html/bcp115>. | |||
| [RFC5785] Nottingham, M. and E. Hammer-Lahav, "Defining Well-Known | [RFC1034] Mockapetris, P., "Domain names - concepts and facilities", | |||
| Uniform Resource Identifiers (URIs)", RFC 5785, | STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987, | |||
| DOI 10.17487/RFC5785, April 2010, | <https://www.rfc-editor.org/info/rfc1034>. | |||
| <https://www.rfc-editor.org/info/rfc5785>. | ||||
| [RFC5988] Nottingham, M., "Web Linking", RFC 5988, | ||||
| DOI 10.17487/RFC5988, October 2010, | ||||
| <https://www.rfc-editor.org/info/rfc5988>. | ||||
| [RFC6570] Gregorio, J., Fielding, R., Hadley, M., Nottingham, M., | [RFC6570] Gregorio, J., Fielding, R., Hadley, M., Nottingham, M., | |||
| and D. Orchard, "URI Template", RFC 6570, | and D. Orchard, "URI Template", RFC 6570, | |||
| DOI 10.17487/RFC6570, March 2012, | DOI 10.17487/RFC6570, March 2012, | |||
| <https://www.rfc-editor.org/info/rfc6570>. | <https://www.rfc-editor.org/info/rfc6570>. | |||
| [RFC6901] Bryan, P., Ed., Zyp, K., and M. Nottingham, Ed., | ||||
| "JavaScript Object Notation (JSON) Pointer", RFC 6901, | ||||
| DOI 10.17487/RFC6901, April 2013, | ||||
| <https://www.rfc-editor.org/info/rfc6901>. | ||||
| [RFC6943] Thaler, D., Ed., "Issues in Identifier Comparison for | [RFC6943] Thaler, D., Ed., "Issues in Identifier Comparison for | |||
| Security Purposes", RFC 6943, DOI 10.17487/RFC6943, May | Security Purposes", RFC 6943, DOI 10.17487/RFC6943, May | |||
| 2013, <https://www.rfc-editor.org/info/rfc6943>. | 2013, <https://www.rfc-editor.org/info/rfc6943>. | |||
| [RFC8288] Nottingham, M., "Web Linking", RFC 8288, | ||||
| DOI 10.17487/RFC8288, October 2017, | ||||
| <https://www.rfc-editor.org/info/rfc8288>. | ||||
| [RFC8615] Nottingham, M., "Well-Known Uniform Resource Identifiers | ||||
| (URIs)", RFC 8615, DOI 10.17487/RFC8615, May 2019, | ||||
| <https://www.rfc-editor.org/info/rfc8615>. | ||||
| [W3C.REC-html401-19991224] | [W3C.REC-html401-19991224] | |||
| Raggett, D., Hors, A., and I. Jacobs, "HTML 4.01 | Raggett, D., Hors, A., and I. Jacobs, "HTML 4.01 | |||
| Specification", World Wide Web Consortium Recommendation | Specification", World Wide Web Consortium Recommendation | |||
| REC-html401-19991224, December 1999, | REC-html401-19991224, December 1999, | |||
| <http://www.w3.org/TR/1999/REC-html401-19991224>. | <http://www.w3.org/TR/1999/REC-html401-19991224>. | |||
| 6.3. URIs | 6.3. URIs | |||
| [1] https://github.com/mnot/I-D/labels/rfc7320 | [1] https://github.com/mnot/I-D/labels/rfc7320bis | |||
| [2] https://mnot.github.io/I-D/rfc7320/ | [2] https://mnot.github.io/I-D/rfc7320bis/ | |||
| [3] https://github.com/mnot/I-D/commits/gh-pages/rfc7320 | [3] https://github.com/mnot/I-D/commits/gh-pages/rfc7320bis | |||
| [4] https://datatracker.ietf.org/doc/draft-nottingham-rfc7320/ | [4] https://datatracker.ietf.org/doc/draft-nottingham-rfc7320bis/ | |||
| Appendix A. Acknowledgments | Appendix A. Acknowledgments | |||
| Thanks to David Booth, Dave Crocker, Tim Bray, Anne van Kesteren, | Thanks to David Booth, Dave Crocker, Tim Bray, Anne van Kesteren, | |||
| Martin Thomson, Erik Wilde, Dave Thaler and Barry Leiba for their | Martin Thomson, Erik Wilde, Dave Thaler and Barry Leiba for their | |||
| suggestions and feedback. | suggestions and feedback. | |||
| Author's Address | Author's Address | |||
| Mark Nottingham | Mark Nottingham | |||
| End of changes. 47 change blocks. | ||||
| 109 lines changed or deleted | 126 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||