<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.9 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc tocindent="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-httpbis-bcp56bis-06" category="bcp" obsoletes="3205">

  <front>
    <title>Building Protocols with HTTP</title>

    <author initials="M." surname="Nottingham" fullname="Mark Nottingham">
      <organization></organization>
      <address>
        <email>mnot@mnot.net</email>
        <uri>https://www.mnot.net/</uri>
      </address>
    </author>

    <date />

    <area>Applications and Real-Time</area>
    <workgroup>HTTP</workgroup>
    <keyword>HTTP API</keyword>

    <abstract>


<t>HTTP is often used as a substrate for other application protocols (a.k.a. HTTP-based APIs). This
document specifies best practices for these protocols’ use of HTTP.</t>



    </abstract>


    <note title="Note to Readers ">


<t>Discussion of this draft takes place on the HTTP working group mailing list
(ietf-http-wg@w3.org), which is archived at <eref target="https://lists.w3.org/Archives/Public/ietf-http-wg/">https://lists.w3.org/Archives/Public/ietf-http-wg/</eref>.</t>

<t>Working Group information can be found at <eref target="http://httpwg.github.io/">http://httpwg.github.io/</eref>; source code and issues list
for this draft can be found at <eref target="https://github.com/httpwg/http-extensions/labels/bcp56bis">https://github.com/httpwg/http-extensions/labels/bcp56bis</eref>.</t>


    </note>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>HTTP <xref target="RFC7230"/> is often used as a substrate for applications other than Web browsing; this is
sometimes referred to as creating “HTTP-based APIs”, or just “HTTP APIs”. This is done for a
variety of reasons, including:</t>

<t><list style="symbols">
  <t>familiarity by implementers, specifiers, administrators, developers and users,</t>
  <t>availability of a variety of client, server and proxy implementations,</t>
  <t>ease of use,</t>
  <t>availability of Web browsers,</t>
  <t>reuse of existing mechanisms like authentication and encryption,</t>
  <t>presence of HTTP servers and clients in target deployments, and</t>
  <t>its ability to traverse firewalls.</t>
</list></t>

<t>These protocols are often ad hoc; they are intended for only deployment by one or a few servers,
and consumption by a limited set of clients. As a result, a body of practices and tools has arisen
around defining HTTP-based APIs that favours these conditions.</t>

<t>However, when such a protocol is standarised, it is typically deployed on multiple uncoordinated
servers, implemented a number of times, and consumed by a broader variety of clients. Such
diversity brings a different set of concerns, and tools and practices intended for a single-server
deployment might not be suitable.</t>

<t>For example, HTTP-based APIs deployed in these circumstances need to more carefully consider how
extensibility and evolution of the service will be handled, how different deployment requirements
will be accommodated, and how clients will evolve with the API.</t>

<t>More generally, application protocols using HTTP face a number of design decisions, including:</t>

<t><list style="symbols">
  <t>Should it define a new URL scheme? Use new ports?</t>
  <t>Should it use standard HTTP methods and status codes, or define new ones?</t>
  <t>How can the maximum value be extracted from the use of HTTP?</t>
  <t>How does it coexist with other uses of HTTP – especially Web browsing?</t>
  <t>How can interoperability problems and “protocol dead ends” be avoided?</t>
</list></t>

<t>This document contains best current practices regarding the use of HTTP by applications other than
Web browsing. <xref target="used"/> defines what applications it applies to; <xref target="overview"/> surveys the properties
of HTTP that are important to preserve, and <xref target="bp"/> conveys best practices for those applications
that do use HTTP.</t>

<t>It is written primarily to guide IETF efforts to define application protocols using HTTP for
deployment on the Internet, but might be applicable in other situations. Note that the requirements
herein do not necessarily apply to the development of generic HTTP extensions.</t>

<section anchor="notational-conventions" title="Notational Conventions">

<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”,
“RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as
shown here.</t>

</section>
</section>
<section anchor="used" title="Is HTTP Being Used?">

<t>Different applications have different goals when using HTTP. In this document, we say an
application is “using HTTP” when any of the following conditions are true:</t>

<t><list style="symbols">
  <t>The transport port in use is 80 or 443,</t>
  <t>The URL scheme “http” or “https” is used,</t>
  <t>The ALPN protocol ID <xref target="RFC7301"/> generically identifies HTTP (e.g., “http/1.1”, “h2”, “h2c”), or</t>
  <t>The IANA registries defined for HTTP are updated or modified.</t>
</list></t>

<t>When an application is using HTTP, all of the requirements of the HTTP protocol suite are in force
(including but not limited to <xref target="RFC7230"/>, <xref target="RFC7231"/>, <xref target="RFC7232"/>, <xref target="RFC7233"/>, <xref target="RFC7234"/>,
<xref target="RFC7235"/> and <xref target="RFC7540"/>).</t>

<t>An application might not be using HTTP according to this definition, but still relying upon the
HTTP specifications in some manner. For example, an application might wish to avoid re-specifying
parts of the message format, but change others; or, it might want to use a different set of methods.</t>

<t>Such applications are referred to as “protocols based upon HTTP” in this document. These have more
freedom to modify protocol operations, but are also likely to lose at least a portion of the
benefits outlined above, as most HTTP implementations won’t be easily adaptable to these changes,
and as the protocol diverges from HTTP, the benefit of mindshare will be lost.</t>

<t>Protocols that are based upon HTTP MUST NOT reuse HTTP’s URL schemes, transport ports, ALPN
protocol IDs or IANA registries; rather, they are encouraged to establish their own.</t>

</section>
<section anchor="overview" title="What’s Important About HTTP">

<t>There are many ways that applications using HTTP are defined and deployed, and sometimes they are
brought to the IETF for standardisation. In that process, what might be workable for deployment in
a limited fashion isn’t appropriate for standardisation and the corresponding broader deployment.</t>

<t>This section examines the facets of the protocol that are important to preserve in these situations.</t>

<section anchor="generic-semantics" title="Generic Semantics">

<t>When writing an application’s specification, it’s often tempting to specify exactly how HTTP is to
be implemented, supported and used.</t>

<t>However, this can easily lead to an unintended profile of HTTP’s behaviour. For example, it’s
common to see specifications with language like this:</t>

<figure><artwork><![CDATA[
A `POST` request MUST result in a `201 Created` response.
]]></artwork></figure>

<t>This forms an expectation in the client that the response will always be <spanx style="verb">201 Created</spanx>, when in
fact there are a number of reasons why the status code might differ in a real deployment. If the
client does not anticipate this, the application’s deployment is brittle.</t>

<t>Much of the value of HTTP is in its generic semantics – that is, the protocol elements defined
by HTTP are potentially applicable to every resource, not specific to a particular context.
Application-specific semantics are expressed in the payload; mostly, in the body, but also in
header fields.</t>

<t>This allows a HTTP message to be examined by generic HTTP software (e.g., HTTP servers,
intermediaries, client implementations), and its handling to be correctly determined. It also
allows people to leverage their knowledge of HTTP semantics without special-casing them for a
particular application.</t>

<t>Therefore, applications that use HTTP MUST NOT re-define, refine or overlay the semantics of
defined protocol elements. Instead, they should focus their specifications on protocol elements
that are specific to that application; namely their HTTP resources.</t>

<t>See <xref target="resource"/> for details.</t>

</section>
<section anchor="links" title="Links">

<t>Another common practice is assuming that the HTTP server’s name space (or a portion thereof) is
exclusively for the use of a single application. This effectively overlays special,
application-specific semantics onto that space, precludes other applications from using it.</t>

<t>As explained in <xref target="RFC7320"/>, such “squatting” on a part of the URL space by a standard usurps the
server’s authority over its own resources, can cause deployment issues, and is therefore bad
practice in standards.</t>

<t>Instead of statically defining URL components like paths, it is RECOMMENDED that applications using
HTTP define links in payloads, to allow flexibility in deployment.</t>

<t>Using runtime links in this fashion has a number of other benefits – especially when an
application is to have multiple implementations and/or deployments (as is often the case for those
that are standardised).</t>

<t>For example, navigating with a link allows a request to be routed to a different server without the
overhead of a redirection, thereby supporting deployment across machines well.</t>

<t>It also becomes possible to “mix and match” different applications on the same server, and offers a
natural mechanism for extensibility, versioning and capability management, since the document
containing the links can also contain information about their targets.</t>

<t>Using links also offers a form of cache invalidation that’s seen on the Web; when a resource’s
state changes, the application can change its link to it so that a fresh copy is always fetched.</t>

</section>
<section anchor="rich-functionality" title="Rich Functionality">

<t>HTTP offers a number of features to applications, such as:</t>

<t><list style="symbols">
  <t>Message framing</t>
  <t>Multiplexing (in HTTP/2)</t>
  <t>Integration with TLS</t>
  <t>Support for intermediaries (proxies, gateways, Content Delivery Networks)</t>
  <t>Client authentication</t>
  <t>Content negotiation for format, language, and other features</t>
  <t>Caching for server scalability, latency and bandwidth reduction, and reliability</t>
  <t>Granularity of access control (through use of a rich space of URLs)</t>
  <t>Partial content to selectively request part of a response</t>
  <t>The ability to interact with the application easily using a Web browser</t>
</list></t>

<t>Applications that use HTTP are encouraged to utilise the various features that the protocol offers,
so that their users receive the maximum benefit from it, and to allow it to be deployed in a
variety of situations. This document does not require specific features to be used, since the
appropriate design tradeoffs are highly specific to a given situation. However, following the
practices in <xref target="bp"/> is a good starting point.</t>

</section>
</section>
<section anchor="bp" title="Best Practices for Using HTTP">

<t>This section contains best practices regarding the use of HTTP by applications, including practices
for specific HTTP protocol elements.</t>

<section anchor="specifying-the-use-of-http" title="Specifying the Use of HTTP">

<t>When specifying the use of HTTP, an application SHOULD use <xref target="RFC7230"/> as the primary reference;
it is not necessary to reference all of the specifications in the HTTP suite unless there are
specific reasons to do so (e.g., a particular feature is called out).</t>

<t>Applications using HTTP SHOULD NOT specify a minimum version of HTTP to be used; because it is a
hop-by-hop protocol, a HTTP connection can be handled by implementations that are not controlled by
the application; for example, proxies, CDNs, firewalls and so on. Requiring a particular version of
HTTP makes it difficult to use in these situations, and harms interoperability for little reason
(since HTTP’s semantics are stable between protocol versions).</t>

<t>However, if an application’s deployment would benefit from the use of a particular version of HTTP
(for example, HTTP/2’s multiplexing), this SHOULD be noted.</t>

<t>Applications using HTTP MUST NOT specify a maximum version, to preserve the protocol’s ability to
evolve.</t>

<t>When specifying examples of protocol interactions, applications SHOULD document both the request
and response messages, with full headers, preferably in HTTP/1.1 format. For example:</t>

<figure><artwork type="example"><![CDATA[
GET /thing HTTP/1.1
Host: example.com
Accept: application/things+json
User-Agent: Foo/1.0

]]></artwork></figure>
<figure><artwork type="example"><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/things+json
Content-Length: 500
Server: Bar/2.2

[payload here]
]]></artwork></figure>

</section>
<section anchor="resource" title="Defining HTTP Resources">

<t>Applications that use HTTP should focus on defining the following application-specific protocol
elements:</t>

<t><list style="symbols">
  <t>Media types <xref target="RFC6838"/>, often based upon a format convention such as JSON <xref target="RFC8259"/>,</t>
  <t>HTTP header fields, as per <xref target="headers"/>, and</t>
  <t>The behaviour of resources, as identified by link relations <xref target="RFC8288"/>.</t>
</list></t>

<t>By composing these protocol elements, an application can define a set of resources, identified by
link relations, that implement specified behaviours, including:</t>

<t><list style="symbols">
  <t>Retrieval of their state using GET, in one or more formats identified by media type;</t>
  <t>Resource creation or update using POST or PUT, with an appropriately identified request body format;</t>
  <t>Data processing using POST and identified request and response body format(s); and</t>
  <t>Resource deletion using DELETE.</t>
</list></t>

<t>For example, an application might specify:</t>

<figure><artwork><![CDATA[
Resources linked to with the "example-widget" link relation type are
Widgets. The state of a Widget can be fetched in the
"application/example-widget+json" format, and can be updated by PUT
to the same link. Widget resources can be deleted.

The "Example-Count" response header field on Widget representations
indicates how many Widgets are held by the sender.

The "application/example-widget+json" format is a JSON [RFC8259]
format representing the state of a Widget. It contains links to
related information in the link indicated by the Link header field
value with the "example-other-info" link relation type.
]]></artwork></figure>

</section>
<section anchor="clients" title="Specifying Client Behaviours">

<t>HTTP does not mandate some behaviours that have nevertheless become very common; if these are not
explicitly specified by applications using HTTP, there may be confusion and interoperability
problems. This section recommends default handling for these mechanisms.</t>

<t><list style="symbols">
  <t>Redirect handling - Applications need to specify how redirects are expected to be handled; see <xref target="redirects"/>.</t>
  <t>Cookies - Applications using HTTP MUST explicitly reference the Cookie specification <xref target="RFC6265"/> if they are required.</t>
  <t>Certificates - Applications using HTTP MUST specify that TLS certificates are to be checked according to <xref target="RFC2818"/> when HTTPS is used.</t>
</list></t>

<t>In general, applications using HTTP ought to align their usage as closely as possible with Web browsers, to avoid interoperability issues when they are used. See <xref target="browser"/>.</t>

<t>If an application using HTTP has browser compatibility as a goal, client interaction ought to be
defined in terms of <xref target="FETCH"/>, since that is the abstraction that browsers use for HTTP; it
enforces many of these best practices.</t>

<t>Applications using HTTP MUST NOT require HTTP features that are usually negotiated to be supported.
For example, requiring that clients support responses with a certain content-encoding
(<xref target="RFC7231"/>, Section 3.1.2.2) instead of negotiating for it (<xref target="RFC7231"/>, Section 5.3.4) means
that otherwise conformant clients cannot interoperate with the application. Applications MAY
encourage the implementation of such features, though.</t>

</section>
<section anchor="http-urls" title="HTTP URLs">

<t>In HTTP, URLs are opaque identifiers under the control of the server. As outlined in <xref target="RFC7320"/>,
standards cannot usurp this space, since it might conflict with existing resources, and constrain
implementation and deployment.</t>

<t>In other words, applications that use HTTP shouldn’t associate application semantics with specific
URL paths on arbitrary servers. Doing so inappropriately conflates the identity of the resource
(its URL) with the capabilities that resource supports, bringing about many of the same
interoperability problems that <xref target="RFC4367"/> warns of.</t>

<t>For example, specifying that a “GET to the URL /foo retrieves a bar document” is bad practice.
Likewise, specifying “The widget API is at the path /bar” violates <xref target="RFC7320"/>.</t>

<t>Instead, applications that use HTTP are encouraged to ensure that URLs are discovered at runtime,
allowing HTTP-based services to describe their own capabilities. One way to do this is to use typed
links <xref target="RFC8288"/> to convey the URIs that are in use, as well as the semantics of the resources
that they identify. See <xref target="resource"/> for details.</t>

<section anchor="initial-url-discovery" title="Initial URL Discovery">

<t>Generally, a client will begin interacting with a given application server by requesting an initial
document that contains information about that particular deployment, potentially including links to
other relevant resources.</t>

<t>Applications that use HTTP are encouraged to allow an arbitrary URL to be used as that entry point.
For example, rather than specifying “the initial document is at “/foo/v1”, they should allow a
deployment to use any URL as the entry point for the application.</t>

<t>In cases where doing so is impractical (e.g., it is not possible to convey a whole URL, but only a
hostname) standard applications that use HTTP can request a well-known URL <xref target="RFC5785"/> as an entry
point.</t>

</section>
<section anchor="scheme" title="URL Schemes">

<t>Applications that use HTTP will typically employ the “http” and/or “https” URL schemes. “https” is
RECOMMENDED to provide authentication, integrity and confidentiality, as well as mitigate pervasive
monitoring attacks <xref target="RFC7258"/>.</t>

<t>However, application-specific schemes can be defined as well.</t>

<t>When defining an URL scheme for an application using HTTP, there are a number of tradeoffs and
caveats to keep in mind:</t>

<t><list style="symbols">
  <t>Unmodified Web browsers will not support the new scheme. While it is possible to register new URL schemes with Web browsers (e.g. registerProtocolHandler() in <xref target="HTML5"/>, as well as several proprietary approaches), support for these mechanisms is not shared by all browsers, and their capabilities vary.</t>
  <t>Existing non-browser clients, intermediaries, servers and associated software will not recognise the new scheme. For example, a client library might fail to dispatch the request; a cache might refuse to store the response, and a proxy might fail to forward the request.</t>
  <t>Because URLs occur in HTTP artefacts commonly, often being generated automatically (e.g., in the <spanx style="verb">Location</spanx> response header), it can be difficult to assure that the new scheme is used consistently.</t>
  <t>The resources identified by the new scheme will still be available using “http” and/or “https” URLs. Those URLs can “leak” into use, which can present security and operability issues. For example, using a new scheme to assure that requests don’t get sent to a “normal” Web site is likely to fail.</t>
  <t>Features that rely upon the URL’s origin <xref target="RFC6454"/>, such as the Web’s same-origin policy, will be impacted by a change of scheme.</t>
  <t>HTTP-specific features such as cookies <xref target="RFC6265"/>, authentication <xref target="RFC7235"/>, caching <xref target="RFC7234"/>, HSTS <xref target="RFC6797"/>, and CORS <xref target="FETCH"/> might or might not work correctly, depending on how they are defined and implemented. Generally, they are designed and implemented with an assumption that the URL will always be “http” or “https”.</t>
  <t>Web features that require a secure context <xref target="SECCTXT"/> will likely treat a new scheme as insecure.</t>
</list></t>

<t>See <xref target="RFC7595"/> for more information about minting new URL schemes.</t>

</section>
<section anchor="transport-ports" title="Transport Ports">

<t>Applications that use HTTP can use the applicable default port (80 for HTTP, 443 for HTTPS), or
they can be deployed upon other ports. This decision can be made at deployment time, or might be
encouraged by the application’s specification (e.g., by registering a port for that application).</t>

<t>If a non-default port is used, it needs to be reflected in the authority of all URLs for that
resource; the only mechanism for changing a default port is changing the scheme (see <xref target="scheme"/>).</t>

<t>Using a port other than the default has privacy implications (i.e., the protocol can now be
distinguished from other traffic), as well as operability concerns (as some networks might block or
otherwise interfere with it). Privacy implications should be documented in Security Considerations.</t>

<t>See <xref target="RFC7605"/> for further guidance.</t>

</section>
</section>
<section anchor="http-methods" title="HTTP Methods">

<t>Applications that use HTTP MUST confine themselves to using registered HTTP methods such as GET,
POST, PUT, DELETE, and PATCH.</t>

<t>New HTTP methods are rare; they are required to be registered with IETF Review (see <xref target="RFC7232"/>),
and are also required to be generic. That means that they need to be potentially applicable to
all resources, not just those of one application.</t>

<t>While historically some applications (e.g., <xref target="RFC4791"/>) have defined non-generic methods,
<xref target="RFC7231"/> now forbids this.</t>

<t>When authors believe that a new method is required, they are encouraged to engage with the HTTP
community early, and document their proposal as a separate HTTP extension, rather than as part of
an application’s specification.</t>

<section anchor="get" title="GET">

<t>GET is one of the most common and useful HTTP methods; its retrieval semantics allow caching,
side-effect free linking and forms the basis of many of the benefits of using HTTP.</t>

<t>A common use of GET is to perform queries, often using the query component of the URL; this is
a familiar pattern from Web browsing, and the results can be cached, improving efficiency of an
often expensive process.</t>

<t>In some cases, however, GET might be unwieldy for expressing queries, because of the limited syntax
of the URL; in particular, if binary data forms part of the query terms, it needs to be encoded to
conform to URL syntax.</t>

<t>While this is not an issue for short queries, it can become one for larger query terms, or ones
which need to sustain a high rate of requests. Additionally, some HTTP implementations limit the
size of URLs they support – although modern HTTP software has much more generous limits than
previously (typically, considerably more than 8000 octets, as required by <xref target="RFC7230"/>, Section
3.1.1).</t>

<t>In these cases, an application using HTTP might consider using POST to express queries in the
request body; doing so avoids encoding overhead and URL length limits in implementations. However,
in doing so it should be noted that the benefits of GET such as caching and linking to query
results are lost. Therefore, applications using HTTP that feel a need to allow POST queries ought
consider allowing both methods.</t>

<t>Applications that use HTTP SHOULD NOT define GET requests to have side effects, since
implementations can and do retry HTTP GET requests that fail.</t>

<t>Finally, note that while HTTP allows GET requests to have a body syntactically, this is done only
to allow parsers to be generic; as per <xref target="RFC7231"/>, Section 4.3.1, a body on a GET has no meaning,
and will be either ignored or rejected by generic HTTP software.</t>

</section>
<section anchor="options" title="OPTIONS">

<t>The OPTIONS method was defined for metadata retrieval, and is used both by WebDAV <xref target="RFC4918"/> and
CORS <xref target="FETCH"/>. Because HTTP-based APIs often need to retrieve metadata about resources, it is
often considered for their use.</t>

<t>However, OPTIONS does have significant limitations:</t>

<t><list style="symbols">
  <t>It isn’t possible to link to the metadata with a simple URL, because OPTIONS is not the default GET method.</t>
  <t>OPTIONS responses are not cacheable, because HTTP caches operate on representations of the resource (i.e., GET and HEAD). If OPTIONS responses are cached separately, their interaction with HTTP cache expiry, secondary keys and other mechanisms needs to be considered.</t>
  <t>OPTIONS is “chatty” - always separating metadata out into a separate request increases the number of requests needed to interact with the application.</t>
  <t>Implementation support for OPTIONS is not universal; some servers do not expose the ability to respond to OPTIONS requests without significant effort.</t>
</list></t>

<t>Instead of OPTIONS, one of these alternative approaches might be more appropriate:</t>

<t><list style="symbols">
  <t>For server-wide metadata, create a well-known URI <xref target="RFC5785"/>, or using an already existing one if it’s appropriate (e.g., HostMeta <xref target="RFC6415"/>).</t>
  <t>For metadata about a specific resource, use a Link response header, or a link in the representation format for that resource. See <xref target="RFC8288"/>. Note that the Link header is available on HEAD responses, which is useful if the client wants to discover a resource’s capabilities before they interact with it.</t>
</list></t>

</section>
</section>
<section anchor="http-status-codes" title="HTTP Status Codes">

<t>The primary function of a HTTP status code is to convey semantics for the benefit of generic HTTP
software, not to convey application-specific semantics.</t>

<t>In particular, status codes are often generated or overwritten by intermediaries, as well as server
and client implementations; for example, when network errors are encountered, a captive portal is
present, when an implementation is overloaded, or it thinks it is under attack. As a result, the
status code that a server-side application generates and the one that the client software receives
often differ.</t>

<t>This means that status codes are not a reliable way to carry application-specific signals.
Specifying that a particular status code has a specific meaning in the context of an application
can have unintended side effects; if that status code is generated by a generic HTTP component can
lead clients to believe that the application is in a state that wasn’t intended.</t>

<t>Instead, applications using HTTP should specify the implications of general classes of responses
(e.g., “successful response” for 2xx; “client error” for 4xx and “server error” for 5xx), conveying
any application-specific information in the message body and/or HTTP header fields, not the status
code. <xref target="RFC7807"/> provides one way for applications using HTTP to do so for error conditions.</t>

<t>There are limited exceptions to this; for example, applications might use 201 (Created) or 404 (Not
Found) to convey application semantics that are compatible with the generic HTTP semantics of those
status codes. In general, though, applications should resist the temptation to map their semantics
into fine-grained status codes.</t>

<t>Because the set of registered HTTP status codes can expand, applications using HTTP should
explicitly point out that clients ought to be able to handle all applicable status codes gracefully
(i.e., falling back to the generic <spanx style="verb">n00</spanx> semantics of a given status code; e.g., <spanx style="verb">499</spanx> can be
safely handled as <spanx style="verb">400</spanx> by clients that don’t recognise it). This is preferable to creating a
“laundry list” of potential status codes, since such a list is never complete.</t>

<t>Applications using HTTP MUST NOT re-specify the semantics of HTTP status codes, even if it is only
by copying their definition. They MUST NOT require specific reason phrases to be used; the reason
phrase has no function in HTTP, and is not guaranteed to be preserved by implementations, and the
reason phrase is not carried at all in the <xref target="RFC7540"/> message format.</t>

<t>Applications that use HTTP MUST only use registered HTTP status codes. As with methods, new HTTP
status codes are rare, and required (by <xref target="RFC7231"/>) to be registered with IETF review. Similarly,
HTTP status codes are generic; they are required (by <xref target="RFC7231"/>) to be potentially applicable to
all resources, not just to those of one application.</t>

<t>When authors believe that a new status code is required, they are encouraged to engage with the
HTTP community early, and document their proposal as a separate HTTP extension, rather than as part
of an application’s specification.</t>

<section anchor="redirects" title="Redirection">

<t>The 3xx series of status codes specified in <xref target="RFC7231"/>, Section 6.4 are used to direct the user
agent to another resource to satisfy the request. The most common of these are 301, 302, 307 and
308 (<xref target="RFC7538"/>), all of which use the Location response header field to indicate where the
client should send the request to.</t>

<t>There are two ways that this group of status codes differ:</t>

<t><list style="symbols">
  <t>Whether they are permanent or temporary. Permanent redirects can be used to update links stored
in the client (e.g., bookmarks), whereas temporary ones can not. Note that this has no effect on
HTTP caching; it is completely separate.</t>
  <t>Whether they allow the redirected request to change the request method from POST to GET. Web
browsers generally do change POST to GET for 301 and 302; therefore, 308 and 307 were created to
allow redirection without changing the method.</t>
</list></t>

<t>This table summarises their relationships:</t>

<texttable>
      <ttcol align='left'>&#160;</ttcol>
      <ttcol align='left'>Permanent</ttcol>
      <ttcol align='left'>Temporary</ttcol>
      <c>Allows changing the request method from POST to GET</c>
      <c>301</c>
      <c>302</c>
      <c>Does not allow changing the request method</c>
      <c>308</c>
      <c>307</c>
</texttable>

<t>As noted in <xref target="RFC7231"/>, a user agent is allowed to automatically follow a 3xx redirect that has a
Location response header field, even if they don’t understand the semantics of the specific status
code. However, they aren’t required to do so; therefore, if an application using HTTP desires
redirects to be automatically followed, it needs to explicitly specify the circumstances when this
is required.</t>

<t>Applications using HTTP SHOULD specify that 301 and 302 responses change the subsequent request
method from POST (but no other method) to GET, to be compatible with browsers.</t>

<t>Generally, when a redirected request is made, its header fields are copied from the original
request’s. However, they can be modified by various mechanisms; e.g., sent Authorization
(<xref target="RFC7235"/>) and Cookie (<xref target="RFC6265"/>) headers will change if the origin (and sometimes path) of
the request changes. Applications using HTTP SHOULD specify if any request headers need to be
modified or removed upon a redirect; however, this behaviour cannot be relied upon, since a generic
client (like a browser) will be unaware of such requirements.</t>

</section>
</section>
<section anchor="headers" title="HTTP Header Fields">

<t>Applications that use HTTP MAY define new HTTP header fields. Typically, using HTTP header fields
is appropriate in a few different situations:</t>

<t><list style="symbols">
  <t>Their content is useful to intermediaries (who often wish to avoid parsing the body), and/or</t>
  <t>Their content is useful to generic HTTP software (e.g., clients, servers), and/or</t>
  <t>It is not possible to include their content in the message body (usually because a format does not allow it).</t>
</list></t>

<t>New header fields MUST be registered, as per <xref target="RFC7231"/> and <xref target="RFC3864"/>.</t>

<t>See <xref target="RFC7231"/>, Section 8.3.1 for guidelines to consider when minting new header fields.
<xref target="I-D.ietf-httpbis-header-structure"/> provides a common structure for new header fields, and
avoids many issues in their parsing and handling; it is RECOMMENDED that new header fields use it.</t>

<t>It is RECOMMENDED that header field names be short (even when HTTP/2 header compression is in
effect, there is an overhead) but appropriately specific. In particular, if a header field is
specific to an application, an identifier for that application SHOULD form a prefix to the header
field name, separated by a “-“.</t>

<t>For example, if the “example” application needs to create three headers, they might be called
“example-foo”, “example-bar” and “example-baz”. Note that the primary motivation here is to avoid
consuming more generic header names, not to reserve a portion of the namespace for the application;
see <xref target="RFC6648"/> for related considerations.</t>

<t>The semantics of existing HTTP header fields MUST NOT be re-defined without updating their
registration or defining an extension to them (if allowed). For example, an application using HTTP
cannot specify that the <spanx style="verb">Location</spanx> header has a special meaning in a certain context.</t>

<t>See <xref target="caching"/> for the interaction between headers and HTTP caching; in particular, request
headers that are used to “select” a response have impact there, and need to be carefully considered.</t>

<t>See <xref target="state"/> for considerations regarding header fields that carry application state (e.g.,
Cookie).</t>

</section>
<section anchor="payload" title="Defining Message Payloads">

<t>There are many potential formats for payloads; for example, JSON <xref target="RFC8259"/>, XML
<xref target="XML"/>, and CBOR <xref target="RFC7049"/>. Best practices for their use are out of scope
for this document.</t>

<t>Applications SHOULD register distinct media types for each format they define; this makes it
possible to identify them unambiguously and negotiate for their use. See <xref target="RFC6838"/> for more
information.</t>

</section>
<section anchor="caching" title="HTTP Caching">

<t>HTTP caching <xref target="RFC7234"/> is one of the primary benefits of using HTTP for applications; it
provides scalability, reduces latency and improves reliability. Furthermore, HTTP caches are
readily available in browsers and other clients, networks as forward and reverse proxies, Content
Delivery Networks and as part of server software.</t>

<t>Assigning even a short freshness lifetime (<xref target="RFC7234"/>, Section 4.2) – e.g., 5 seconds – allows
a response to be reused to satisfy multiple clients, and/or a single client making the same request
repeatedly. In general, if it is safe to reuse something, consider assigning a freshness lifetime;
cache implementations take active measures to remove content intelligently when they are out of
space, so “it will fill up the cache” is not a valid concern.</t>

<t>The most common method for specifying freshness is the max-age response directive (<xref target="RFC7234"/>,
Section 5.2.2.8). The Expires header (<xref target="RFC7234"/>, Section 5.3) can also be used, but it is not
necessary to specify it; all modern cache implementations support Cache-Control, and specifying
freshness as a delta is both more convenient in most cases, and less error-prone.</t>

<t>Understand that stale responses (e.g., one with “Cache-Control: max-age=0”) can be reused when the
cache is disconnected from the origin server; this can be useful for handling network issues. See
<xref target="RFC7234"/>, Section 4.2.4, and also <xref target="RFC5861"/> for additional controls over stale content.</t>

<t>Stale responses can be refreshed by assigning a validator, saving both transfer bandwidth and
latency for large responses; see <xref target="RFC7232"/>.</t>

<t>If an application defines a request header field that might be used by a server to change the
response’s headers or body, authors should point out that this has implications for caching; in
general, such resources need to either make their responses uncacheable (e.g., with the “no-store”
cache-control directive defined in <xref target="RFC7234"/>, Section 5.2.2.3) or consistently send the Vary
response header (<xref target="RFC7231"/>, Section 7.1.4).</t>

<t>For example, this response:</t>

<figure><artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/example+xml
Cache-Control: max-age=60
ETag: "sa0f8wf20fs0f"
Vary: Accept-Encoding

[content]
]]></artwork></figure>

<t>can be stored for 60 seconds by both private and shared caches, can be revalidated with
If-None-Match, and varies on the Accept-Encoding request header field.</t>

<t>In some situations, responses without explicit cache directives (e.g., Cache-Control or Expires)
will be stored and served using a heuristic freshness lifetime; see <xref target="RFC7234"/>, Section 4.2.2. As
the heuristic is not under control of the application, it is generally preferable to set an
explicit freshness lifetime.</t>

<t>If caching of a response is not desired, the appropriate response directive is “Cache-Control:
no-store”. This only need be sent in situations where the response might be cached; see
<xref target="RFC7234"/>, Section 3. Note that “Cache-Control: no-cache” allows a response to be stored, just
not reused by a cache; it does not prevent caching (despite its name).</t>

<t>For example, this response cannot be stored or reused by a cache:</t>

<figure><artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/example+xml
Cache-Control: no-store

[content]
]]></artwork></figure>

<t>When an application has a need to express a lifetime that’s separate from the freshness lifetime,
this should be expressed separately, either in the response’s body or in a separate header field.
When this happens, the relationship between HTTP caching and that lifetime need to be carefully
considered, since the response will be used as long as it is considered fresh.</t>

<t>Like other functions, HTTP caching is generic; it does not have knowledge of the application in
use. Therefore, caching extensions need to be backwards-compatible, as per <xref target="RFC7234"/>, Section
5.2.3.</t>

</section>
<section anchor="state" title="Application State">

<t>Applications that use HTTP MAY use stateful cookies <xref target="RFC6265"/> to identify a client and/or store
client-specific data to contextualise requests.</t>

<t>When used, it is important to carefully specify the scoping and use of cookies; if the application
exposes sensitive data or capabilities (e.g., by acting as an ambient authority), exploits are
possible. Mitigations include using a request-specific token to assure the intent of the client.</t>

<t>Applications MUST NOT make assumptions about the relationship between separate requests on a single
transport connection; doing so breaks many of the assumptions of HTTP as a stateless protocol, and
will cause problems in interoperability, security, operability and evolution.</t>

</section>
<section anchor="client-auth" title="Client Authentication">

<t>Applications that use HTTP MAY use HTTP authentication <xref target="RFC7235"/> to identify clients. The Basic
authentication scheme <xref target="RFC7617"/> MUST NOT be used unless the underlying transport is
authenticated, integrity-protected and confidential (e.g., as provided the “HTTPS” URL scheme, or
another using TLS). The Digest scheme <xref target="RFC7616"/> MUST NOT be used unless the underlying transport
is similarly secure, or the chosen hash algorithm is not “MD5”.</t>

<t>With HTTPS, clients might also be authenticated using certificates <xref target="RFC5246"/>.</t>

<t>When used, it is important to carefully specify the scoping and use of authentication; if the
application exposes sensitive data or capabilities (e.g., by acting as an ambient authority),
exploits are possible. Mitigations include using a request-specific token to assure the intent of
the client.</t>

</section>
<section anchor="browser" title="Co-Existing with Web Browsing">

<t>Even if there is not an intent for an application that uses HTTP to be used with a Web browser, its
resources will remain available to browsers and other HTTP clients.</t>

<t>This means that all such applications need to consider how browsers will interact with them,
particularly regarding security.</t>

<t>For example, if an application’s state can be changed using a POST request, a Web browser can
easily be coaxed into making that request by a HTML form on an arbitrary Web site.</t>

<t>Or, If content returned from the application’s resources is under control of an attacker (for
example, part of the request is reflected in the response, or the response contains external
information that might be under the control of the attacker), a cross-site scripting attack is
possible, whereby an attacker can inject code into the browser and access data and capabilities on
that origin.</t>

<t>This is only a small sample of the kinds of issues that applications using HTTP must consider.
Generally, the best approach is to consider the application actually as a Web application, and to
follow best practices for their secure development.</t>

<t>A complete enumeration of such practices is out of scope for this document, but some considerations
include:</t>

<t><list style="symbols">
  <t>Using an application-specific media type in the Content-Type header, and requiring clients to fail if it is not used</t>
  <t>Using X-Content-Type-Options: nosniff <xref target="FETCH"/> to assure that content under attacker control can’t be coaxed into a form that is interpreted as active content by a Web browser</t>
  <t>Using Content-Security-Policy <xref target="CSP"/> to constrain the capabilities of active content (such as HTML <xref target="HTML5"/>), thereby mitigating Cross-Site Scripting attacks</t>
  <t>Using Referrer-Policy <xref target="REFERRER-POLICY"/> to prevent sensitive data in URLs from being leaked in the Referer request header</t>
  <t>Using the ‘HttpOnly’ flag on Cookies to assure that cookies are not exposed to browser scripting languages <xref target="RFC6265"/></t>
  <t>Avoiding use of compression on any sensitive information (e.g., authentication tokens, passwords), as the scripting environment offered by Web browsers allows an attacker to repeatedly probe the compression space; if the attacker has access to the path of the communication, they can use this capability to recover that information.</t>
</list></t>

<t>Depending on how they are intended to be deployed, specifications for applications using HTTP might
require the use of these mechanisms in specific ways, or might merely point them out in Security
Considerations.</t>

<t>An example of a HTTP response from an application that does not intend for its content to be treated as active by browsers might look like this:</t>

<figure><artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/example+json
X-Content-Type-Options: nosniff
Content-Security-Policy: default-src 'none'
Cache-Control: max-age=3600
Referrer-Policy: no-referrer

[content]
]]></artwork></figure>

<t>If an application using HTTP has browser compatibility as a goal, client interaction ought to be
defined in terms of <xref target="FETCH"/>, since that is the abstraction that browsers use for HTTP; it
enforces many of these best practices.</t>

</section>
<section anchor="other-apps" title="Application Boundaries">

<t>Because the origin <xref target="RFC6454"/> is how many HTTP capabilities are scoped, applications also need to
consider how deployments might interact with other applications (including Web browsing) on the
same origin.</t>

<t>For example, if Cookies <xref target="RFC6265"/> are used to carry application state, they will be sent with
all requests to the origin by default, unless scoped by path, and the application might receive
cookies from other applications on the origin. This can lead to security issues, as well as
collision in cookie names.</t>

<t>One solution to these issues is to require a dedicated hostname for the application, so that it has
a unique origin. However, it is often desirable to allow multiple applications to be deployed on a
single hostname; doing so provides the most deployment flexibility and enables them to be “mixed”
together (See <xref target="RFC7320"/> for details). Therefore, applications using HTTP should strive to allow
multiple applications on an origin.</t>

<t>To enable this, when specifying the use of Cookies, HTTP authentication realms <xref target="RFC7235"/>, or
other origin-wide HTTP mechanisms, applications using HTTP SHOULD NOT mandate the use of a
particular identifier, but instead let deployments configure them. Consideration SHOULD be given to
scoping them to part of the origin, using their specified mechanisms for doing so.</t>

<t>Modern Web browsers constrain the ability of content from one origin to access resources from
another, to avoid leaking private information. As a result, applications that wish to expose
cross-origin data to browsers will need to implement the CORS protocol; see <xref target="FETCH"/>.</t>

</section>
<section anchor="server-push" title="Server Push">

<t>HTTP/2 adds the ability for servers to “push” request/response pairs to clients in <xref target="RFC7540"/>,
Section 8.2. While server push seems like a natural fit for many common application semantics
(e.g., “fanout” and publish/subscribe), a few caveats should be noted:</t>

<t><list style="symbols">
  <t>Server push is hop-by-hop; that is, it is not automatically forwarded by intermediaries. As a result, it might not work easily (or at all) with proxies, reverse proxies, and Content Delivery Networks.</t>
  <t>Server push can have negative performance impact on HTTP when used incorrectly; in particular, if there is contention with resources that have actually been requested by the client.</t>
  <t>Server push is implemented differently in different clients, especially regarding interaction with HTTP caching, and capabilities might vary.</t>
  <t>APIs for server push are currently unavailable in some implementations, and vary widely in others. In particular, there is no current browser API for it.</t>
  <t>Server push is not supported in HTTP/1.1 or HTTP/1.0.</t>
  <t>Server push does not form part of the “core” semantics of HTTP, and therefore might not be supported by future versions of the protocol.</t>
</list></t>

<t>Applications wishing to optimise cases where the client can perform work related to requests before
the full response is available (e.g., fetching links for things likely to be contained within)
might benefit from using the 103 (Early Hints) status code; see <xref target="RFC8297"/>.</t>

<t>Applications using server push directly need to enforce the requirements regarding authority in
<xref target="RFC7540"/>, Section 8.2, to avoid cross-origin push attacks.</t>

</section>
<section anchor="versioning" title="Versioning and Evolution">

<t>It’s often necessary to introduce new features into application protocols, and change existing ones.</t>

<t>In HTTP, backwards-incompatible changes are possible using a number of mechanisms:</t>

<t><list style="symbols">
  <t>Using a distinct link relation type <xref target="RFC8288"/> to identify a URL for a resource that implements the new functionality</t>
  <t>Using a distinct media type <xref target="RFC6838"/> to identify formats that enable the new functionality</t>
  <t>Using a distinct HTTP header field to implement new functionality outside the message body</t>
</list></t>

</section>
</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>This document has no requirements for IANA.</t>

</section>
<section anchor="security-considerations" title="Security Considerations">

<t><xref target="state"/> discusses the impact of using stateful mechanisms in the protocol as ambient authority,
and suggests a mitigation.</t>

<t><xref target="scheme"/> requires support for ‘https’ URLs, and discourages the use of ‘http’ URLs, to provide
authentication, integrity and confidentiality, as well as mitigate pervasive monitoring attacks.</t>

<t><xref target="browser"/> highlights the implications of Web browsers’ capabilities on applications that use HTTP.</t>

<t><xref target="other-apps"/> discusses the issues that arise when applications are deployed on the same origin
as Web sites (and other applications).</t>

<t><xref target="server-push"/> highlights risks of using HTTP/2 server push in a manner other than specified.</t>

<t>Applications that use HTTP in a manner that involves modification of implementations – for
example, requiring support for a new URL scheme, or a non-standard method – risk having those
implementations “fork” from their parent HTTP implementations, with the possible result that they
do not benefit from patches and other security improvements incorporated upstream.</t>

<section anchor="privacy-considerations" title="Privacy Considerations">

<t>HTTP clients can expose a variety of information to servers. Besides information that’s explicitly sent as part of an application’s operation (for example, names and other user-entered data), and “on the wire” (which is one of the reasons https is recommended in <xref target="scheme"/>), other information can be gathered through less obvious means – often by connecting activities of a user over time.</t>

<t>This includes session information, tracking the client through fingerprinting, and mobile code.</t>

<t>Session information includes things like the IP address of the client, TLS session tickets, Cookies, ETags stored in the client’s cache, and other stateful mechanisms. Applications are advised to avoid using session mechanisms unless they are unavoidable or necessary for operation, in which case these risks needs to be documented. When they are used, implementations should be encouraged to allow clearing such state.</t>

<t>Fingerprinting uses unique aspects of a client’s messages and behaviours to connect disparate requests and connections. For example, the User-Agent request header conveys specific information about the implementation; the Accept-Language request header conveys the users’ preferred language. In combination, a number of these markers can be used to uniquely identify a client, impacting its control over its data. As a result, applications are advised to specify that clients should only emit the information they need to function in requests.</t>

<t>Finally, if an application exposes the ability to run mobile code, great care needs to be taken, since any ability to observe its environment can be used as an opportunity to both fingerprint the client and to obtain and manipulate private data (including session information). For example, access to high-resolution timers (even indirectly) can be used to profile the underlying hardware, creating a unique identifier for the system. Applications are advised avoid allowing the use of mobile code where possible; when it cannot be avoided, the resulting system’s security properties need be carefully scrutinised.</t>

</section>
</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor="RFC7230" target='https://www.rfc-editor.org/info/rfc7230'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems.  This document provides an overview of HTTP architecture and its associated terminology, defines the &quot;http&quot; and &quot;https&quot; Uniform Resource Identifier (URI) schemes, defines the HTTP/1.1 message syntax and parsing requirements, and describes related security concerns for implementations.</t></abstract>
</front>
<seriesInfo name='RFC' value='7230'/>
<seriesInfo name='DOI' value='10.17487/RFC7230'/>
</reference>



<reference  anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<abstract><t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='2119'/>
<seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>



<reference  anchor="RFC8174" target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></author>
<date year='2017' month='May' />
<abstract><t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='8174'/>
<seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>



<reference  anchor="RFC7301" target='https://www.rfc-editor.org/info/rfc7301'>
<front>
<title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
<author initials='S.' surname='Friedl' fullname='S. Friedl'><organization /></author>
<author initials='A.' surname='Popov' fullname='A. Popov'><organization /></author>
<author initials='A.' surname='Langley' fullname='A. Langley'><organization /></author>
<author initials='E.' surname='Stephan' fullname='E. Stephan'><organization /></author>
<date year='2014' month='July' />
<abstract><t>This document describes a Transport Layer Security (TLS) extension for application-layer protocol negotiation within the TLS handshake. For instances in which multiple application protocols are supported on the same TCP or UDP port, this extension allows the application layer to negotiate which protocol will be used within the TLS connection.</t></abstract>
</front>
<seriesInfo name='RFC' value='7301'/>
<seriesInfo name='DOI' value='10.17487/RFC7301'/>
</reference>



<reference  anchor="RFC7231" target='https://www.rfc-editor.org/info/rfc7231'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless \%application- level protocol for distributed, collaborative, hypertext information systems.  This document defines the semantics of HTTP/1.1 messages, as expressed by request methods, request header fields, response status codes, and response header fields, along with the payload of messages (metadata and body content) and mechanisms for content negotiation.</t></abstract>
</front>
<seriesInfo name='RFC' value='7231'/>
<seriesInfo name='DOI' value='10.17487/RFC7231'/>
</reference>



<reference  anchor="RFC7232" target='https://www.rfc-editor.org/info/rfc7232'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless application- level protocol for distributed, collaborative, hypertext information systems.  This document defines HTTP/1.1 conditional requests, including metadata header fields for indicating state changes, request header fields for making preconditions on such state, and rules for constructing the responses to a conditional request when one or more preconditions evaluate to false.</t></abstract>
</front>
<seriesInfo name='RFC' value='7232'/>
<seriesInfo name='DOI' value='10.17487/RFC7232'/>
</reference>



<reference  anchor="RFC7233" target='https://www.rfc-editor.org/info/rfc7233'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Range Requests</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><organization /></author>
<author initials='Y.' surname='Lafon' fullname='Y. Lafon' role='editor'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless application- level protocol for distributed, collaborative, hypertext information systems.  This document defines range requests and the rules for constructing and combining responses to those requests.</t></abstract>
</front>
<seriesInfo name='RFC' value='7233'/>
<seriesInfo name='DOI' value='10.17487/RFC7233'/>
</reference>



<reference  anchor="RFC7234" target='https://www.rfc-editor.org/info/rfc7234'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Caching</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><organization /></author>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham' role='editor'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless \%application- level protocol for distributed, collaborative, hypertext information systems.  This document defines HTTP caches and the associated header fields that control cache behavior or indicate cacheable response messages.</t></abstract>
</front>
<seriesInfo name='RFC' value='7234'/>
<seriesInfo name='DOI' value='10.17487/RFC7234'/>
</reference>



<reference  anchor="RFC7235" target='https://www.rfc-editor.org/info/rfc7235'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Authentication</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless application- level protocol for distributed, collaborative, hypermedia information systems.  This document defines the HTTP Authentication framework.</t></abstract>
</front>
<seriesInfo name='RFC' value='7235'/>
<seriesInfo name='DOI' value='10.17487/RFC7235'/>
</reference>



<reference  anchor="RFC7540" target='https://www.rfc-editor.org/info/rfc7540'>
<front>
<title>Hypertext Transfer Protocol Version 2 (HTTP/2)</title>
<author initials='M.' surname='Belshe' fullname='M. Belshe'><organization /></author>
<author initials='R.' surname='Peon' fullname='R. Peon'><organization /></author>
<author initials='M.' surname='Thomson' fullname='M. Thomson' role='editor'><organization /></author>
<date year='2015' month='May' />
<abstract><t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2).  HTTP/2 enables a more efficient use of network resources and a reduced perception of latency by introducing header field compression and allowing multiple concurrent exchanges on the same connection.  It also introduces unsolicited push of representations from servers to clients.</t><t>This specification is an alternative to, but does not obsolete, the HTTP/1.1 message syntax.  HTTP's existing semantics remain unchanged.</t></abstract>
</front>
<seriesInfo name='RFC' value='7540'/>
<seriesInfo name='DOI' value='10.17487/RFC7540'/>
</reference>



<reference  anchor="RFC7320" target='https://www.rfc-editor.org/info/rfc7320'>
<front>
<title>URI Design and Ownership</title>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham'><organization /></author>
<date year='2014' month='July' />
<abstract><t>Section 1.1.1 of RFC 3986 defines URI syntax as &quot;a federated and extensible naming system wherein each scheme's specification may further restrict the syntax and semantics of identifiers using that scheme.&quot;  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 URI substructure is inappropriate, because that essentially usurps ownership.  This document further describes this problematic practice and provides some acceptable alternatives for use in standards.</t></abstract>
</front>
<seriesInfo name='BCP' value='190'/>
<seriesInfo name='RFC' value='7320'/>
<seriesInfo name='DOI' value='10.17487/RFC7320'/>
</reference>



<reference  anchor="RFC6838" target='https://www.rfc-editor.org/info/rfc6838'>
<front>
<title>Media Type Specifications and Registration Procedures</title>
<author initials='N.' surname='Freed' fullname='N. Freed'><organization /></author>
<author initials='J.' surname='Klensin' fullname='J. Klensin'><organization /></author>
<author initials='T.' surname='Hansen' fullname='T. Hansen'><organization /></author>
<date year='2013' month='January' />
<abstract><t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols.  This memo documents an Internet Best Current Practice.</t></abstract>
</front>
<seriesInfo name='BCP' value='13'/>
<seriesInfo name='RFC' value='6838'/>
<seriesInfo name='DOI' value='10.17487/RFC6838'/>
</reference>



<reference  anchor="RFC8288" target='https://www.rfc-editor.org/info/rfc8288'>
<front>
<title>Web Linking</title>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham'><organization /></author>
<date year='2017' month='October' />
<abstract><t>This specification defines a model for the relationships between resources on the Web (&quot;links&quot;) and the type of those relationships (&quot;link relation types&quot;).</t><t>It also defines the serialisation of such links in HTTP headers with the Link header field.</t></abstract>
</front>
<seriesInfo name='RFC' value='8288'/>
<seriesInfo name='DOI' value='10.17487/RFC8288'/>
</reference>



<reference  anchor="RFC2818" target='https://www.rfc-editor.org/info/rfc2818'>
<front>
<title>HTTP Over TLS</title>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author>
<date year='2000' month='May' />
<abstract><t>This memo describes how to use Transport Layer Security (TLS) to secure Hypertext Transfer Protocol (HTTP) connections over the Internet.  This memo provides information for the Internet community.</t></abstract>
</front>
<seriesInfo name='RFC' value='2818'/>
<seriesInfo name='DOI' value='10.17487/RFC2818'/>
</reference>



<reference  anchor="RFC6454" target='https://www.rfc-editor.org/info/rfc6454'>
<front>
<title>The Web Origin Concept</title>
<author initials='A.' surname='Barth' fullname='A. Barth'><organization /></author>
<date year='2011' month='December' />
<abstract><t>This document defines the concept of an &quot;origin&quot;, which is often used as the scope of authority or privilege by user agents.  Typically, user agents isolate content retrieved from different origins to prevent malicious web site operators from interfering with the operation of benign web sites.  In addition to outlining the principles that underlie the concept of origin, this document details how to determine the origin of a URI and how to serialize an origin into a string.  It also defines an HTTP header field, named &quot;Origin&quot;, that indicates which origins are associated with an HTTP request.   [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6454'/>
<seriesInfo name='DOI' value='10.17487/RFC6454'/>
</reference>



<reference  anchor="RFC3864" target='https://www.rfc-editor.org/info/rfc3864'>
<front>
<title>Registration Procedures for Message Header Fields</title>
<author initials='G.' surname='Klyne' fullname='G. Klyne'><organization /></author>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham'><organization /></author>
<author initials='J.' surname='Mogul' fullname='J. Mogul'><organization /></author>
<date year='2004' month='September' />
<abstract><t>This specification defines registration procedures for the message header fields used by Internet mail, HTTP, Netnews and other applications.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<seriesInfo name='BCP' value='90'/>
<seriesInfo name='RFC' value='3864'/>
<seriesInfo name='DOI' value='10.17487/RFC3864'/>
</reference>



<reference  anchor="RFC6648" target='https://www.rfc-editor.org/info/rfc6648'>
<front>
<title>Deprecating the &quot;X-&quot; Prefix and Similar Constructs in Application Protocols</title>
<author initials='P.' surname='Saint-Andre' fullname='P. Saint-Andre'><organization /></author>
<author initials='D.' surname='Crocker' fullname='D. Crocker'><organization /></author>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham'><organization /></author>
<date year='2012' month='June' />
<abstract><t>Historically, designers and implementers of application protocols have often distinguished between standardized and unstandardized parameters by prefixing the names of unstandardized parameters with the string &quot;X-&quot; or similar constructs.  In practice, that convention causes more problems than it solves.  Therefore, this document deprecates the convention for newly defined parameters with textual (as opposed to numerical) names in application protocols. This memo documents an Internet Best Current Practice.</t></abstract>
</front>
<seriesInfo name='BCP' value='178'/>
<seriesInfo name='RFC' value='6648'/>
<seriesInfo name='DOI' value='10.17487/RFC6648'/>
</reference>




    </references>

    <references title='Informative References'>

<reference anchor="HTML5" target="https://html.spec.whatwg.org">
  <front>
    <title>HTML - Living Standard</title>
    <author >
      <organization>WHATWG</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="FETCH" target="https://fetch.spec.whatwg.org">
  <front>
    <title>Fetch - Living Standard</title>
    <author >
      <organization>WHATWG</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>




<reference  anchor="RFC8259" target='https://www.rfc-editor.org/info/rfc8259'>
<front>
<title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
<author initials='T.' surname='Bray' fullname='T. Bray' role='editor'><organization /></author>
<date year='2017' month='December' />
<abstract><t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format.  It was derived from the ECMAScript Programming Language Standard.  JSON defines a small set of formatting rules for the portable representation of structured data.</t><t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t></abstract>
</front>
<seriesInfo name='STD' value='90'/>
<seriesInfo name='RFC' value='8259'/>
<seriesInfo name='DOI' value='10.17487/RFC8259'/>
</reference>



<reference  anchor="RFC6265" target='https://www.rfc-editor.org/info/rfc6265'>
<front>
<title>HTTP State Management Mechanism</title>
<author initials='A.' surname='Barth' fullname='A. Barth'><organization /></author>
<date year='2011' month='April' />
<abstract><t>This document defines the HTTP Cookie and Set-Cookie header fields. These header fields can be used by HTTP servers to store state (called cookies) at HTTP user agents, letting the servers maintain a stateful session over the mostly stateless HTTP protocol.  Although cookies have many historical infelicities that degrade their security and privacy, the Cookie and Set-Cookie header fields are widely used on the Internet.  This document obsoletes RFC 2965.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6265'/>
<seriesInfo name='DOI' value='10.17487/RFC6265'/>
</reference>



<reference  anchor="RFC4367" target='https://www.rfc-editor.org/info/rfc4367'>
<front>
<title>What's in a Name: False Assumptions about DNS Names</title>
<author initials='J.' surname='Rosenberg' fullname='J. Rosenberg' role='editor'><organization /></author>
<author><organization>IAB</organization></author>
<date year='2006' month='February' />
<abstract><t>The Domain Name System (DNS) provides an essential service on the Internet, mapping structured names to a variety of data, usually IP addresses.  These names appear in email addresses, Uniform Resource Identifiers (URIs), and other application-layer identifiers that are often rendered to human users.  Because of this, there has been a strong demand to acquire names that have significance to people, through equivalence to registered trademarks, company names, types of services, and so on.  There is a danger in this trend; the humans and automata that consume and use such names will associate specific semantics with some names and thereby make assumptions about the services that are, or should be, provided by the hosts associated with the names.  Those assumptions can often be false, resulting in a variety of failure conditions.  This document discusses this problem in more detail and makes recommendations on how it can be avoided.  This memo provides information for the Internet community.</t></abstract>
</front>
<seriesInfo name='RFC' value='4367'/>
<seriesInfo name='DOI' value='10.17487/RFC4367'/>
</reference>



<reference  anchor="RFC5785" target='https://www.rfc-editor.org/info/rfc5785'>
<front>
<title>Defining Well-Known Uniform Resource Identifiers (URIs)</title>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham'><organization /></author>
<author initials='E.' surname='Hammer-Lahav' fullname='E. Hammer-Lahav'><organization /></author>
<date year='2010' month='April' />
<abstract><t>This memo defines a path prefix for &quot;well-known locations&quot;, &quot;/.well-known/&quot;, in selected Uniform Resource Identifier (URI) schemes.   [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5785'/>
<seriesInfo name='DOI' value='10.17487/RFC5785'/>
</reference>



<reference  anchor="RFC7258" target='https://www.rfc-editor.org/info/rfc7258'>
<front>
<title>Pervasive Monitoring Is an Attack</title>
<author initials='S.' surname='Farrell' fullname='S. Farrell'><organization /></author>
<author initials='H.' surname='Tschofenig' fullname='H. Tschofenig'><organization /></author>
<date year='2014' month='May' />
<abstract><t>Pervasive monitoring is a technical attack that should be mitigated in the design of IETF protocols, where possible.</t></abstract>
</front>
<seriesInfo name='BCP' value='188'/>
<seriesInfo name='RFC' value='7258'/>
<seriesInfo name='DOI' value='10.17487/RFC7258'/>
</reference>



<reference  anchor="RFC6797" target='https://www.rfc-editor.org/info/rfc6797'>
<front>
<title>HTTP Strict Transport Security (HSTS)</title>
<author initials='J.' surname='Hodges' fullname='J. Hodges'><organization /></author>
<author initials='C.' surname='Jackson' fullname='C. Jackson'><organization /></author>
<author initials='A.' surname='Barth' fullname='A. Barth'><organization /></author>
<date year='2012' month='November' />
<abstract><t>This specification defines a mechanism enabling web sites to declare themselves accessible only via secure connections and/or for users to be able to direct their user agent(s) to interact with given sites only over secure connections.  This overall policy is referred to as HTTP Strict Transport Security (HSTS).  The policy is declared by web sites via the Strict-Transport-Security HTTP response header field and/or by other means, such as user agent configuration, for example. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6797'/>
<seriesInfo name='DOI' value='10.17487/RFC6797'/>
</reference>



<reference anchor="SECCTXT"
           target='https://www.w3.org/TR/2016/CR-secure-contexts-20160915'>
<front>
<title>Secure Contexts</title>

<author initials='M.' surname='West' fullname='Mike West'>
    <organization />
</author>

<date month='September' day='15' year='2016' />
</front>

<seriesInfo name='World Wide Web Consortium CR' value='CR-secure-contexts-20160915' />
<format type='HTML' target='https://www.w3.org/TR/2016/CR-secure-contexts-20160915' />
</reference>



<reference  anchor="RFC7595" target='https://www.rfc-editor.org/info/rfc7595'>
<front>
<title>Guidelines and Registration Procedures for URI Schemes</title>
<author initials='D.' surname='Thaler' fullname='D. Thaler' role='editor'><organization /></author>
<author initials='T.' surname='Hansen' fullname='T. Hansen'><organization /></author>
<author initials='T.' surname='Hardie' fullname='T. Hardie'><organization /></author>
<date year='2015' month='June' />
<abstract><t>This document updates the guidelines and recommendations, as well as the IANA registration processes, for the definition of Uniform Resource Identifier (URI) schemes.  It obsoletes RFC 4395.</t></abstract>
</front>
<seriesInfo name='BCP' value='35'/>
<seriesInfo name='RFC' value='7595'/>
<seriesInfo name='DOI' value='10.17487/RFC7595'/>
</reference>



<reference  anchor="RFC7605" target='https://www.rfc-editor.org/info/rfc7605'>
<front>
<title>Recommendations on Using Assigned Transport Port Numbers</title>
<author initials='J.' surname='Touch' fullname='J. Touch'><organization /></author>
<date year='2015' month='August' />
<abstract><t>This document provides recommendations to designers of application and service protocols on how to use the transport protocol port number space and when to request a port assignment from IANA.  It provides designer guidance to requesters or users of port numbers on how to interact with IANA using the processes defined in RFC 6335; thus, this document complements (but does not update) that document.</t></abstract>
</front>
<seriesInfo name='BCP' value='165'/>
<seriesInfo name='RFC' value='7605'/>
<seriesInfo name='DOI' value='10.17487/RFC7605'/>
</reference>



<reference  anchor="RFC4791" target='https://www.rfc-editor.org/info/rfc4791'>
<front>
<title>Calendaring Extensions to WebDAV (CalDAV)</title>
<author initials='C.' surname='Daboo' fullname='C. Daboo'><organization /></author>
<author initials='B.' surname='Desruisseaux' fullname='B. Desruisseaux'><organization /></author>
<author initials='L.' surname='Dusseault' fullname='L. Dusseault'><organization /></author>
<date year='2007' month='March' />
<abstract><t>This document defines extensions to the Web Distributed Authoring and Versioning (WebDAV) protocol to specify a standard way of accessing, managing, and sharing calendaring and scheduling information based on the iCalendar format.  This document defines the &quot;calendar-access&quot; feature of CalDAV.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4791'/>
<seriesInfo name='DOI' value='10.17487/RFC4791'/>
</reference>



<reference  anchor="RFC4918" target='https://www.rfc-editor.org/info/rfc4918'>
<front>
<title>HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)</title>
<author initials='L.' surname='Dusseault' fullname='L. Dusseault' role='editor'><organization /></author>
<date year='2007' month='June' />
<abstract><t>Web Distributed Authoring and Versioning (WebDAV) consists of a set of methods, headers, and content-types ancillary to HTTP/1.1 for the management of resource properties, creation and management of resource collections, URL namespace manipulation, and resource locking (collision avoidance).</t><t>RFC 2518 was published in February 1999, and this specification obsoletes RFC 2518 with minor revisions mostly due to interoperability experience.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4918'/>
<seriesInfo name='DOI' value='10.17487/RFC4918'/>
</reference>



<reference  anchor="RFC6415" target='https://www.rfc-editor.org/info/rfc6415'>
<front>
<title>Web Host Metadata</title>
<author initials='E.' surname='Hammer-Lahav' fullname='E. Hammer-Lahav' role='editor'><organization /></author>
<author initials='B.' surname='Cook' fullname='B. Cook'><organization /></author>
<date year='2011' month='October' />
<abstract><t>This specification describes a method for locating host metadata as well as information about individual resources controlled by the host.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6415'/>
<seriesInfo name='DOI' value='10.17487/RFC6415'/>
</reference>



<reference  anchor="RFC7807" target='https://www.rfc-editor.org/info/rfc7807'>
<front>
<title>Problem Details for HTTP APIs</title>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham'><organization /></author>
<author initials='E.' surname='Wilde' fullname='E. Wilde'><organization /></author>
<date year='2016' month='March' />
<abstract><t>This document defines a &quot;problem detail&quot; as a way to carry machine- readable details of errors in a HTTP response to avoid the need to define new error response formats for HTTP APIs.</t></abstract>
</front>
<seriesInfo name='RFC' value='7807'/>
<seriesInfo name='DOI' value='10.17487/RFC7807'/>
</reference>



<reference  anchor="RFC7538" target='https://www.rfc-editor.org/info/rfc7538'>
<front>
<title>The Hypertext Transfer Protocol Status Code 308 (Permanent Redirect)</title>
<author initials='J.' surname='Reschke' fullname='J. Reschke'><organization /></author>
<date year='2015' month='April' />
<abstract><t>This document specifies the additional Hypertext Transfer Protocol (HTTP) status code 308 (Permanent Redirect).</t></abstract>
</front>
<seriesInfo name='RFC' value='7538'/>
<seriesInfo name='DOI' value='10.17487/RFC7538'/>
</reference>



<reference anchor="I-D.ietf-httpbis-header-structure">
<front>
<title>Structured Headers for HTTP</title>

<author initials='M' surname='Nottingham' fullname='Mark Nottingham'>
    <organization />
</author>

<author initials='P' surname='Kamp' fullname='Poul-Henning Kamp'>
    <organization />
</author>

<date month='June' day='5' year='2018' />

<abstract><t>This document describes a set of data types and algorithms associated with them that are intended to make it easier and safer to define and handle HTTP header fields.  It is intended for use by new specifications of HTTP header fields as well as revisions of existing header field specifications when doing so does not cause interoperability issues.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-httpbis-header-structure-06' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-httpbis-header-structure-06.txt' />
</reference>



<reference anchor="XML"
           target='http://www.w3.org/TR/2008/REC-xml-20081126'>
<front>
<title>Extensible Markup Language (XML) 1.0 (Fifth Edition)</title>

<author initials='T.' surname='Bray' fullname='Tim Bray'>
    <organization />
</author>

<author initials='J.' surname='Paoli' fullname='Jean Paoli'>
    <organization />
</author>

<author initials='M.' surname='Sperberg-McQueen' fullname='Michael Sperberg-McQueen'>
    <organization />
</author>

<author initials='E.' surname='Maler' fullname='Eve Maler'>
    <organization />
</author>

<author initials='F.' surname='Yergeau' fullname='FranÃ§ois Yergeau'>
    <organization />
</author>

<date month='November' day='26' year='2008' />
</front>

<seriesInfo name='World Wide Web Consortium Recommendation' value='REC-xml-20081126' />
<format type='HTML' target='http://www.w3.org/TR/2008/REC-xml-20081126' />
</reference>



<reference  anchor="RFC7049" target='https://www.rfc-editor.org/info/rfc7049'>
<front>
<title>Concise Binary Object Representation (CBOR)</title>
<author initials='C.' surname='Bormann' fullname='C. Bormann'><organization /></author>
<author initials='P.' surname='Hoffman' fullname='P. Hoffman'><organization /></author>
<date year='2013' month='October' />
<abstract><t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation.  These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t></abstract>
</front>
<seriesInfo name='RFC' value='7049'/>
<seriesInfo name='DOI' value='10.17487/RFC7049'/>
</reference>



<reference  anchor="RFC5861" target='https://www.rfc-editor.org/info/rfc5861'>
<front>
<title>HTTP Cache-Control Extensions for Stale Content</title>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham'><organization /></author>
<date year='2010' month='May' />
<abstract><t>This document defines two independent HTTP Cache-Control extensions that allow control over the use of stale responses by caches.  This  document is not an Internet Standards Track specification; it is published for informational purposes.</t></abstract>
</front>
<seriesInfo name='RFC' value='5861'/>
<seriesInfo name='DOI' value='10.17487/RFC5861'/>
</reference>



<reference  anchor="RFC7617" target='https://www.rfc-editor.org/info/rfc7617'>
<front>
<title>The 'Basic' HTTP Authentication Scheme</title>
<author initials='J.' surname='Reschke' fullname='J. Reschke'><organization /></author>
<date year='2015' month='September' />
<abstract><t>This document defines the &quot;Basic&quot; Hypertext Transfer Protocol (HTTP) authentication scheme, which transmits credentials as user-id/ password pairs, encoded using Base64.</t></abstract>
</front>
<seriesInfo name='RFC' value='7617'/>
<seriesInfo name='DOI' value='10.17487/RFC7617'/>
</reference>



<reference  anchor="RFC7616" target='https://www.rfc-editor.org/info/rfc7616'>
<front>
<title>HTTP Digest Access Authentication</title>
<author initials='R.' surname='Shekh-Yusef' fullname='R. Shekh-Yusef' role='editor'><organization /></author>
<author initials='D.' surname='Ahrens' fullname='D. Ahrens'><organization /></author>
<author initials='S.' surname='Bremer' fullname='S. Bremer'><organization /></author>
<date year='2015' month='September' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) provides a simple challenge- response authentication mechanism that may be used by a server to challenge a client request and by a client to provide authentication information.  This document defines the HTTP Digest Authentication scheme that can be used with the HTTP authentication mechanism.</t></abstract>
</front>
<seriesInfo name='RFC' value='7616'/>
<seriesInfo name='DOI' value='10.17487/RFC7616'/>
</reference>



<reference  anchor="RFC5246" target='https://www.rfc-editor.org/info/rfc5246'>
<front>
<title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
<author initials='T.' surname='Dierks' fullname='T. Dierks'><organization /></author>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author>
<date year='2008' month='August' />
<abstract><t>This document specifies Version 1.2 of the Transport Layer Security (TLS) protocol.  The TLS protocol provides communications security over the Internet.  The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5246'/>
<seriesInfo name='DOI' value='10.17487/RFC5246'/>
</reference>



<reference anchor="CSP"
           target='https://www.w3.org/TR/2016/WD-CSP3-20160913'>
<front>
<title>Content Security Policy Level 3</title>

<author initials='M.' surname='West' fullname='Mike West'>
    <organization />
</author>

<date month='September' day='13' year='2016' />
</front>

<seriesInfo name='World Wide Web Consortium WD' value='WD-CSP3-20160913' />
<format type='HTML' target='https://www.w3.org/TR/2016/WD-CSP3-20160913' />
</reference>



<reference anchor="REFERRER-POLICY"
           target='https://www.w3.org/TR/2017/CR-referrer-policy-20170126'>
<front>
<title>Referrer Policy</title>

<author initials='J.' surname='Eisinger' fullname='Jochen Eisinger'>
    <organization />
</author>

<author initials='E.' surname='Stark' fullname='Emily Stark'>
    <organization />
</author>

<date month='January' day='26' year='2017' />
</front>

<seriesInfo name='World Wide Web Consortium CR' value='CR-referrer-policy-20170126' />
<format type='HTML' target='https://www.w3.org/TR/2017/CR-referrer-policy-20170126' />
</reference>



<reference  anchor="RFC8297" target='https://www.rfc-editor.org/info/rfc8297'>
<front>
<title>An HTTP Status Code for Indicating Hints</title>
<author initials='K.' surname='Oku' fullname='K. Oku'><organization /></author>
<date year='2017' month='December' />
<abstract><t>This memo introduces an informational HTTP status code that can be used to convey hints that help a client make preparations for processing the final response.</t></abstract>
</front>
<seriesInfo name='RFC' value='8297'/>
<seriesInfo name='DOI' value='10.17487/RFC8297'/>
</reference>



<reference  anchor="RFC3205" target='https://www.rfc-editor.org/info/rfc3205'>
<front>
<title>On the use of HTTP as a Substrate</title>
<author initials='K.' surname='Moore' fullname='K. Moore'><organization /></author>
<date year='2002' month='February' />
<abstract><t>Recently there has been widespread interest in using Hypertext Transfer Protocol (HTTP) as a substrate for other applications-level protocols. This document recommends technical particulars of such use, including use of default ports, URL schemes, and HTTP security mechanisms.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<seriesInfo name='BCP' value='56'/>
<seriesInfo name='RFC' value='3205'/>
<seriesInfo name='DOI' value='10.17487/RFC3205'/>
</reference>




    </references>


<section anchor="changes-from-rfc-3205" title="Changes from RFC 3205">

<t><xref target="RFC3205"/> captured the Best Current Practice in the early 2000’s, based on the concerns facing
protocol designers at the time. Use of HTTP has changed considerably since then, and as a result
this document is substantially different. As a result, the changes are too numerous to list
individually.</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIADzKOVsAA+V96XIb2ZXm/3yKbOiHiG4A3LSVON1uSqJK6tE2Istlh8Ph
SgAJIK1EJjozQYqW7ZjXmNebJ5nzneUuCZBVXeH+NXaEigQTN+9y1u8sdzwe
J13Rlfnz9MW2KOdFtUw/NXVXz+qyTW+KbpW+ubr6lMzrWZWt6al5ky26cZF3
i/Gq6zbToh1PZ5vHT/DD0ZNknnX00LdX51cXf0tm9Muybm6fp/RIUk/busy7
vH2enp4cPU6SYtM8T7tm23YnR0ffHZ0kWZNnz9PzzaYs6KtFXbVpVs3Tz3lW
jq+KdZ7c1M2XZVNvN89lVl/yW/po3v/tx3zqf2m307ZraCb+o40uMP5+ev7p
bZK0Hb3yT1lZV7SO27xNNsXz9A/0+Cilf4pqnlfdKG3rpmvyRUs/3a71h64p
ZvSnWb3eZPrDmh6mPxVVWVT5H5Mk23arunmepOMkpf8VFe3F+0n6oe462vhV
tuaPZaPfZ82X/l/qZplVxV94b57zJ/k6K8rn6bqqu3/HP5Mq7/gP24bmjRNq
nx8e3tzcTOyvh7Tx1aJu1jTKdY5R3ly9f/dYhuuyZpl3/ourbl1O2k0+m9ys
su5mOaEZyINCM/hqOk7fFdcgnEvsXdbM+Qm3VvxP1qtLoAN6c3714/f02euL
q5dv9r96kXez1X3vfo0Hfv3Lk2Q8HqcZE8esSxImgaJN60WXV+m2zedpRvTn
6SelTUvrbpU3aeZJ1BFTmx5kky+TbMLENJ5mGIFIqh1O0qtV0YKFtiCIFGsq
FkXeptO87WgAen8xo1/xAhq/zf2gDzETmhMPOtFJ00nmf/qAf7r6T8Qd87xp
/5Qkr4p2tm1bTIq+0NE7hVtpa7/Q6Jsym9FQFV4hBA92wtYxS6WgJPxWFm2X
HDgOH98s//3mFJs/HKU3q4L2nAbOmtmKyIf2qEv/hx0ZvtlO5OHDc3miPfy0
ndJmHYYDHv4bLeVHffv3/HZHkzTBWVbR1tB2bCv/AqbGbkN0sCSptJ1Oivrw
386IE7cNLWtWz3MWFkXbbmmxvAjZT7cNe4fFvHVAYlh9Bf9nnH8lSsB2todl
Ns3L9tAkHaaPg1gX83mZJ8mD9G3VNfV8O8P8lZa+ffunz69fPj05Pfrb336e
sLJQ6gmVdSuaMMmydNrUNy1t1Zmshmiprdd5RxKxTUn45E1DY3Y1hp2RCIXE
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
AYGRg8I43iT5f6ZoR01wugAA

-->

</rfc>

