URI Design and Ownership
RFC 8820

Document Type RFC - Best Current Practice (June 2020; No errata)
Obsoletes RFC 7320
Updates RFC 3986
Last updated 2020-06-30
Stream IETF
Formats plain text html xml pdf htmlized bibtex
Reviews
Stream WG state (None)
Document shepherd Martin Thomson
Shepherd write-up Show (last changed 2020-01-21)
IESG IESG state RFC 8820 (Best Current Practice)
Consensus Boilerplate Yes
Telechat date
Responsible AD Adam Roach
Send notices to mt@mozilla.com, art@ietf.org
IANA IANA review state IANA OK - No Actions Needed


Internet Engineering Task Force (IETF)                     M. Nottingham
Request for Comments: 8820                                     June 2020
BCP: 190                                                                
Obsoletes: 7320                                                         
Updates: 3986                                                           
Category: Best Current Practice                                         
ISSN: 2070-1721

                        URI Design and Ownership

Abstract

   Section 1.1.1 of RFC 3986 defines URI syntax as "a federated and
   extensible naming system wherein each scheme's specification may
   further restrict the syntax and semantics of identifiers using that
   scheme."  In other words, the structure of a URI is defined by its
   scheme.  While it is common for schemes to further delegate their
   substructure to the URI's owner, publishing independent standards
   that mandate particular forms of substructure in URIs is often
   problematic.

   This document provides guidance on the specification of URI
   substructure in standards.

   This document obsoletes RFC 7320 and updates RFC 3986.

Status of This Memo

   This memo documents an Internet Best Current Practice.

   This document is a product of the Internet Engineering Task Force
   (IETF).  It represents the consensus of the IETF community.  It has
   received public review and has been approved for publication by the
   Internet Engineering Steering Group (IESG).  Further information on
   BCPs is available in Section 2 of RFC 7841.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   https://www.rfc-editor.org/info/rfc8820.

Copyright Notice

   Copyright (c) 2020 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (https://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction
     1.1.  Intended Audience
     1.2.  Notational Conventions
   2.  Best Current Practices for Standardizing Structured URIs
     2.1.  URI Schemes
     2.2.  URI Authorities
     2.3.  URI Paths
     2.4.  URI Queries
     2.5.  URI Fragment Identifiers
   3.  Alternatives to Specifying Structure in URIs
   4.  Security Considerations
   5.  IANA Considerations
   6.  References
     6.1.  Normative References
     6.2.  Informative References
   Appendix A.  Changes from RFC 7320
   Acknowledgments
   Author's Address

1.  Introduction

   URIs [RFC3986] very often include structured application data.  This
   might include artifacts from filesystems (often occurring in the path
   component) and user information (often in the query component).  In
   some cases, there can even be application-specific data in the
   authority component (e.g., some applications are spread across
   several hostnames to enable a form of partitioning or dispatch).

   Implementations can impose further constraints upon the structure of
   URIs; for example, many web servers use the filename extension of the
   last path segment to determine the media type of the response.
   Likewise, prepackaged applications often have highly structured URIs
   that can only be changed in limited ways (often, just the hostname
   and port on which they are deployed).

   Because the owner of the URI (as defined in [webarch],
   Section 2.2.2.1) is choosing to use the server or the application,
   this can be seen as reasonable delegation of authority.  However,
   when such conventions are mandated by a party other than the owner,
   it can have several potentially detrimental effects:

   *  Collisions - As more ad hoc conventions for URI structure become
      standardized, it becomes more likely that there will be collisions
      between them (especially considering that servers, applications,
      and individual deployments will have their own conventions).

   *  Dilution - When the information added to a URI is ephemeral, this
      dilutes its utility by reducing its stability (see [webarch],
      Section 3.5.1) and can cause several alternate forms of the URI to
      exist (see [webarch], Section 2.3.1).

   *  Rigidity - Fixed URI syntax often interferes with desired
      deployment patterns.  For example, if an authority wishes to offer
      several applications on a single hostname, it becomes difficult to
      impossible to do if their URIs do not allow the required
      flexibility.
Show full document text