<?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-07" 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 such protocols’ use of HTTP when they are defined for diverse
implementation and broad deployment (e.g., in standards efforts).</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. Perhaps because of the factors cited above, a body of
practices and tools has arisen around defining HTTP-based APIs that favours these conditions.</t>

<t>However, when such an application has multiple, separate implementations of the server component,
is deployed on multiple uncoordinated servers, and is consumed by diverse clients – as is often
the case for standards efforts to define new HTTP APIs – tools and practices intended for limited
deployment can become unsuitable.</t>

<t>For example, because implementations (both client and server) will implement and evolve at
different paces, a HTTP-based API might need to more carefully consider how extensibility of the
service will be handled, and how different deployment requirements will be accommodated.</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 in the HTTP Method Registry with IETF
Review (see <xref target="RFC7231"/>), 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, create a separate resource and link to it using a Link response header or a link serialised into the representation’s body. 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 cross-site request forgery (CSRF) from arbitrary Web sites.</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 (XSS) 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 name, 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='July' day='2' 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-07' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-httpbis-header-structure-07.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:
H4sIADBfzVsAA+V96XIbWXbm//sUadQPkTYAUdRa4thtaivJI5U0IsvVHR2O
rgSQALKVyIQzE6RodTvmNeb15knmfGe5SwJktTvav6Y7QkWCiZt3Oet3ljuZ
TFxf9lXxPHuxK6tFWa+yT23TN/Om6rLrsl9nby8vP7lFM6/zDT21aPNlPymL
fjlZ9/12VnaT2Xz7+Al+OHnqFnlPD317dX75+s9uTr+smvbmeUaPuGbWNVXR
F93z7OHpyWPnym37POvbXdefnpx8f3Lq8rbIn2fn221V0lfLpu6yvF5kn4u8
mlyWm8JdN+2XVdvsts9lVl+KG/poMfzt52IWful2s65vaSbho60uMP1+dv7p
nXNdT6/8Q141Na3jpujctnye/Z4eH2f0T1kvirofZ13T9m2x7Oinm43+0Lfl
nP40bzbbXH/Y0MP0p7Kuyrr4N+fyXb9u2ucum7iM/lfWtBcfptmPTd/Txq/z
DX8sG/0hb78M/9K0q7wu/4P35jl/Umzysnqebeqm/2f8M62Lnv+wa2neOKHu
+f3719fXU/vrfdr4etm0GxrlqsAoby8/vH8sw/V5uyr68MV1v6mm3baYT6/X
eX+9mtIM5EGhGXw1m2TvyysQzgX2Lm8X/IRfK/4n69Ul0AG9Pb/8+Qf67M3r
y5dvD796WfTz9V3vfoMH/vqXOzeZTLKciWPeO8ckUHZZs+yLOtt1xSLLif4C
/WS0aVnTr4s2ywOJemLqsqN8+mWaT5mYJrMcIxBJdcfT7HJddmChHQgiw5rK
ZVl02azoehqA3l/O6Ve8oNvRovyY9zARmpIQ6PWaZkYTuMmIU7JFsSSqWvC3
FnSUbVe4crOtCrxE5gbumbVNvqCHt1Vzw68/KqarKYgy63TLuqxY0ig9TVW3
hWil+MOP+Kdv/kD8t6DR/+Dcq7Kb77oOQ9OcelqVyAM6vC80/22Vz2m2PEed
MTEsDoeZNgOt4req7Hp35GXI5Hr1z9cPcbzHY1pjSRtAA+ftfE2rolPos/9h
RIFvdlN5+P65PNHd/7Sb0XHcjwe8/0+0lJ/17T/w2z3V0wTneU2bT1u3q8ML
mN77LVHaiuTebjYtm/v/dEa8vmtpWfNmUfCGll23o8XyIrD30TYcHBbz1gFJ
JOgr+D+T4ivRGrazu1/ls6Lq7pssxfRxEJtysagK577L3tV92yx2c8xfqfXb
t7/7/Obl09OHJ3/+86+Tbh7LVaHjfk0TJmkJIrnuaKvOZDVErV2zKXqSuV1G
4q1oWxqzbzDsnIQ0ZFI2GtD5aEz8lf2RxLn8ST4U4sfsFiRSZSLuKm/psG5A
RDRaRxMCPc6rHfTPc+f+PlvmG6IVeoyemt1knq6JDseegfBzvtiUdcnLbPD7
orgqqmZLf+PDos2gT2nA/IqIL5/RoPLePIsmMa9KEetFewX2pi8SC36N3ivb
hoFovsyRNPKhcf1u6nvbQjm4+EqzxL5tijlte9ltQENfCpZV9AaTJ3h5Uc/b
my1+xRDbtujokyAHZJqyQJl6B3YWCRqxOranXtAIJT1gc6RTpM1icZEty7a4
zquqI2q7XNNbImkGESMEReJj3czPguQp6RxIEYroaerqJhYvdFo4aJxztiyu
bbJjx7OlTdxteGV4MKcd2JQ9jdTRxP1BdNPsU9Gu8y0k5DzXDYRQWZKopGPO
5vylfNZcFbTGbNYssPkuiFK8rG+wjjVYoS07LKRlxmTBiZMYEDDYoadXXBHD
4xfsB014UfLZ0xa9ba6JutqxCGKW1MQ/sTLAyza7qi+JbEBO25zZb0BGthol
N1gMtGVEgA5swltJU6LhbKhsV88bMlTKOpfNki1VcaS7Sn+gLVVN4OkCOq7z
wsHhtXNQMOuaofwHcYhayWo6Os/FGEV2U1jDdjkhBD1KF9GCyENaH1bQ7co+
n1UFbeQberz4mm94l+yIh5t0NCMhpevg98qyj8kqrarwtDDMVVNdESv1blEu
SVzhc7LCCuzR4JhJpK7WPa1PJNqmabEjJOR2FREytrIkbUcUf52peA7MTbvn
MAtavMyChD3xMknohRwGvhVmEO1EW/z7jpiNudJ/NZ/DRmxgMy9oVz5gKqui
LlpiyZvxLVbGrjPSBTfQIFm928xoxjS/RdGVq5r+My9Zqwyl6sW62VVEMr2d
cs7n/NPn91k3X9PsfpP91MnZb0EPv0m+g0MykpEJkIpYNwuhCvpLv+tYTXas
CSJCIurmsYiBmCZAhZv8a7nZbUgMV7sCu0G7DcICNbXNhp+JjB/7+qIB3RFp
NSxQxUURbUZPd15GEsUWrCewl4mOiycCAm6hLUw60j4TiW5kSSPbdVpLDqm8
6EZ8blcN0cjiNxCarNjUsCPi6XMy6sWum+9aoUPPLm2xylt2sQaLY1l4WD27
eOpTUvlQ76TuZXeJliCzku+W+nsBdj6jb5CQJJItrulb3Y5Y6IaFG5ZKC+/p
OWfTYAHIEn6D889p9sQirH9alrS0Kd++zbY0Eq2VRzpgwhJN0NLiOTkeeNHw
mvEmovZ3PaTSNWl46JhtW25ISlesn1Y72t7s3evLNwcE069zRdPGMkjN0Xc4
aXJ/SN7sepUBMz8anTk0qGx7V/Y7mTe7ZoVsCwaJudjRowV9h1ZF1jKROS2/
kyVgUFG068IMEpnLUvi7nMtUg/0Hw/u77/A6fnNeZS+xwbVsH5RzRs4q7Gli
t9GHny4uydzi/2Y/fuSfP7/+Xz+9+/z6FX6+eHv+/r3/wZ64ePvxp/evwk/y
uaNvvvz44cPrH1/Jl+nTbPDRh/PfjeT0Rx8/Xb77+OP5+xFbHAn5g3Bo0TMx
EFoiG1bS5PkU3bwtZ/QLfefFy0/Zg0dqu54+ePA9EZP88uzB00f0C5SrvIxN
C/lVbI/ttshbDEJMTfy7JYVSQcSTuUqSl9QvHQnvZEY6i3f4RQG6IKG2+E32
7TvmHbgxJqETxlmTVRRJ71WTAwJZs0lt1DUlQkqXTdYAicWcZle7mDbpkVH4
3kgGyusbb8o0VdVc4+/BxpAtbHcFS2scOonEugMvskDG0llVdtmzE8jYR48e
jvXJIMSzEZyLEf7OP5HQKjt2C+zZ8/effvTMk717ZZ7Ew5MHdABKoiw4S+Ad
4qzyfqrzyOPefzB9AOpYn8q/89ExBL++4935j+eQeLDN8fXYXeWhsNbdlpUf
pkp6EO+BIvxZtiobbGfYzTETgG5kolr1M36BXyAsj0ItV7x/XpD3aYqR5QE4
2ExRIuHYsRqH3x4kv50mvz1MfiM6Hjv/22PaVBGd/MHjRzQsXO3zdIlqmDQs
mCKBBjNB1UajtMcWLPsHPH1yLGg/2qK6wVO7rcg8cRLVWfLagQxX2GObvKZT
nmaJKZYfmtB12a3Z94PWo5dMZES8ypF9GzZ9AwG4YtOS3GyZGVwd+ogFa3dG
5zyGftKBVb+AovOI8dQXUOOC9umCLe0EFmyLoV86CspAbD3eBuG9oaiCUwrr
njkeFqBbtmQPwupohBBvAvWweSDuHy8J7ybJ0LD3JnK+YoVHJETOIT3AvOpB
ksLNiKGW8MGaXV8xE5jnQt5CQ98Q7Glg/1439T0mBRqUtcoi37IBrZoFRj7v
rvpWuVfrarPAE1hBJ8OcErbBAzob3uKSTJo1FmQmKa2kpx0PELA3CQabmpnu
UQ8Xn93rIilEu5UKL/oAcsdFcqcD4w8ExVlGu72Gl+X9TXJ+ySUj0uKzJoOD
doGJcl2UZPde1yLzf6ap0hTeedvlfEYbLrP99p23glibtiIPNhDI1/mNrTOm
sZgDI7gtrxfeRxM1FaASm7Ejg20HElcbgE2Z2OMqO36JapMcFlQD+2Es9pw3
T4Cf8ZEzyBeMmpJ0jRdYy7xbi4gEwdAayLBrS4N9Bq8UzxheYEPMQ6dTixAE
SljE75iqddsVDDmxkGCLU/3wIjC+P9G77UdhQ9BtZGGJ3fODWkUXBZ0IWZKd
KgGYh5heKpjokBOpBplyz+CvvgC+IMJSJRXmPu+JheCeGc7bN24WOZ04zG63
xbT1kKEwY6efJQicBuXHCj4BZA/p5Np7wrQXy7Lylv09WMgkZkoi4IGwxZwd
O4A1z7UohrKafZuKWHwHscpgESZBxgHA7PPsl08fLy5/YQUIK5w5kvZ6V7Gh
kGe/nJ48yF4CrysWeAyn3RV2sBDT8HNoRvRaRYzliMzrjgxf+a7IibxilqHt
S96guAjRJmAafE+5LHZRFe+jR28EAwluo5K9KAJZAT1dxTSZvROJqvNjZxAK
k4mm3Oa97JAIupRiYu6hucPvYCziA5SLErL4ouYNlawtIbfNaO+MPBkQwebY
uzwLFJVaIiovHLl2XoZsyZug77NlFXkeEGpEYjfYZgabx7woowYmsgyqtpzv
qrxlP5Nch6mLQmUT/3SYJMvOr2C/Tmxvnml+UxGvn7HmAcygnwNDUwUH5Uan
uGbcPyOjrFp0RjU5rNZOURWv8sXsVxHBOFTi53TEmteYjZqPMYo5duwtbIoF
4F6oDT3cgT48Vrir7wRyURafqSRj/l4UGAlTIEqRhTid8LZotrLVFfaaJ83q
40vdXFfFYhXDq7aBYECoEAUSJvO8U+99o0h2dCoRuU1Vx9AzxTjVKkw1pjBj
JToRghnDrikFQIXKqnLlEz+pZulMF+1RHRRK19O5qfbsBLxZkt3T6XoHMiby
ov0ozsvxmASHGvKMA5XVjY7L6zECZquNBNq3b/YJmcCiw/q8rEzsvy/rLx3s
YHG8VRgamsBRoK7bbWTPVRRFtENcjSnQLAGEHTHkbKYXS59meYxYRvGVbP2O
zCGarAAUHn3JM5xolQgLDVkUJIbmvXxLT6IzShjHrt4h1iMO1R3jyY2hBOFw
FN1+CFEtNLE3Sije8w58W+V8yMSf5p6dsj/CwPOo+3dSoVB0I5yhyAeTY2yF
8aYwyO5Bu123a7edhzF5ByVUygAnwGg2U8mV9ic5Zp0nEG0iQxEF8xB0b+RO
duLChROMgozAfIQ4MU3IffUxPR6PaXswXKMjJNPXHTsN9JYIlrjNYBOnR7Gi
CvSFSajQg7BuRIRly6r4atAuYJzY8PmJj6Ld1TDrwihsAZi1xXGFSLHJsXpT
P8Uf1fkfAgQ0GXFBDOcf+gC0dfcTyw9R5gDnZwmcz7hbxLve8CsWx0PQvSaT
ZCVxPLYycl5lkO5mU4iEJWtWPePUT+PwhQlJUBVIaK0njEEWZSvm41gohMhR
jSy8OSKnfN42HXlD+XwtsGZRVQISsjaSIAJJcXqoVJU52pRfmfzI2ZyvR9HE
UihVdqljQcEzVnAJT9NSXU0GSEtmho/L8WYm2P84g6ai4cQWXQB7MsSYOJ6U
iSBBRDbzQlA/9TSdYsIG+gotgaN4XfrXJDadz3Q3SahKSK/zJClf56/a/NmO
49gZ7R04joyYcpGrEGSPiEzL2vbh52J2puToeZzsULBj8CeH5pOIAHHlS+ZM
ohU6AuLKzhQDCbGCfLJ5s71hwS02ImdxsB0Nef8Zsf03u3ouGCdtn0ay/WIC
Py0LnAuD2MmBqvzLO8bIPhjm0ML0WOET5aWv2K+jUrzV+6fH9CdgwCvx5YXq
L99fIMIhFMnHntoi2RHCwGyUELMUWNEYwCysuOxVUZVstf1Y9PDTOrzipYar
kpguPtcv1cWqIQOQp4D3GVZiVr7SJssS2wF8nfliJQ6dsF1HwjM38qxodvX8
RhI+6J/rckHLI/7bKffhDy1NWL9BQ/5AzjnsFouHz+F/MkG2ZAoc9Wt2YYOe
bHF2olTodxLVvN5PsH+Ieea6PnZkKq83TYyYcsq9J6EoYRSV5q2H48BHM6RA
dbpESeZxmN3FZvDQwNqHD3Y9vbEr1N5vyTHrIlozKyOgP0yZY2d0LnzJaQW0
lnlB60zCWYausEov+7FGolXplCZRfZQXbk6cDxEHH9Loknd2FPAMxlnMKgwd
sjNrssjFiIBGCPuWTHtamvgIa/K7aG9Tf2NFK6vDdKaZd4QDco3R42iwBYfA
/9mqaTgqKLJ+25SsWt132QtQxKckZPRTwFq+fUdDDLCHNLD2VwTUokBo+Dpn
7/hFp5CxN6hFcF14yFPsq/AmBSq69IFoKnuoqgZf8EiSwOPxO0TCbgTeRNrH
mRPjJ44yMcP4J2I0fB/uDUYzw+C7ugKje+/c+R0w1xyxtgaCXb21xPdUWuO0
A3otsPtdz2D2LdhZiDV5OCYH8CjBX1Gr/tgCAZ+FvABefe7WzXYyu5nQf/wx
WXQfBFIbrUgOloblk+ShWEKA7rGjKvDkUTeQOmdqCqjR5JXBy1c/0r8+e0ZR
wAxc8pmZU4RUtG1hoaLwNpwwVwragWc8En4AJNPcghx4zV7EWlIvAGboAboj
YX2Fn1I4oBMEeUYqqygi10/nxxmAntHL5T7wFtls1+xbJgIv8awOLl+Y5ijZ
V9HQ90LqDHT3sSJuSj8zPi62JG6jNO9MR3RmSQby/nECR8Zy/l6cIOUknWS6
z9s6ZUY+/d6Z4tKjimenk/cynFNaLGhFssyJXlZwTdEUoMBQgchIyQSE6diB
XOLUK3ZXeMseTB+oAZFAi2QY/ed//qf95n54fZnd79e2TfgWHXHXP7cnkJbo
zkn/b+mzaPrype4f/giiIpHXTs5XtIjn9K6GRjnh1ySv8rM6PTnJPv5Pp1bP
5PJmW9w+tD31vqhX/fp59vjkxF2wkfM8e5G390+np879Xl04jvH+G7+ZJfOr
OJmLuE+9VlIjHnm400BIEJKmDs5oGqM96O77PHLTFmqSkvWY9bTkTgX8k2cP
n8FxF58tCqTkenySTcHBfrNus3+5+Pgjff83CIyfPv4eAcW/lyknuBwHkUgc
0KNKKniTpP1dcrRH0WcBX71TDy/SYrssJdmmJxNRd0lD8qfPaObECC9uxDM3
/Ks7AHnuaTqIYp9opFG9aArJ+136/rHCqz7Ly3I+F2FFe+lNnwtEkMj/UWVY
cvSjt2AqMQKjnZqeyJlfsv/Dvdj4IzzjYS0FmFNfIcZajVzryMDh8eGnny6V
d2UnzOyKA+kLbxRz1qJMAK95lfe5xYE4jBuGZpBlf4BEeESjHXXHZ0oCfu4L
OiWeuwz76vX715evh6jAwfivij+NOgQOw4GJSe0N9pGONCH/g/zWUUpUvKFs
cmCgn/kRtnILPSbWGvK5T6UW/1G1In9xFMuR9IUsT0beqRJPncexRAM6XDok
KSNoAjCAeU7t1Z5E7cu8d6x68D3Md/Ra3/uy2dW0Tn8KMW9CnPghJYlXTRCt
/lhgFfQahKU4Eql7IkY5RpgZ+FvTqPH7/8I9EEucRcnvVZD8Gw+if/bzMom3
dxAMpHv7W/AH0pAYg8+VzyaAF2pv8rnbAv0yAPcmO8TDSNBln4bYCZ5g8EN0
tG+Yq+v9wosH0gGaBftnhRm8C7UBNEYL5VSIIFBE6DAkV8MEohmwsaw5rOzt
C0h9BuNI5KBakg6IbTkv++BJycpvCSorIkZTuZEgRr3cdRagHVp5zvIS1Sk0
x6gtpMpowfGmHGakD44o0s12hWWcT0VMCiwXHp2kRVeWG2t2FOjTsDwfVSrm
CgkGY/uMg5jA/PVZqA5gH80XgCmDtwwtt2j/gmcDipDvp56NasYnp0+QXCNn
caNpIewdL/jNyG9cKpf9yuttsUwCl+8vsnn85ZDbRuJoDrmXZOVoNtuzB880
gY0HvrC8K4a+LbV3fGuagc8ZyCt20hVqAL6FwgtkmSBwGMGgzDVJyUHI1Nnz
FLRwJa0i4ullEqvRQVjhvxva/vFEgX3rw1Lv1huSnovnj1VaGC9Yx2GBs8LH
sCAxCng2JHS+feOCMA5yKHwhMoz9Mi3VMmDTr5mNOUsrI8YkVqw5y6sTqdoY
p6bowV/iSRjUIomlCUokm7djeN9QPc8QPpNgmirY1nuHPIYl6evjXo10BsqD
BoEPK7w2AZQFmnNHQv+WlHah8uDh9MGUzOVjlBZapMVDjioTyFe75duPpw+n
j45JXOSWsssy+LqUQgiW8nWYNWlHyNJAZ31xELubpoz34fx3zkNy/Oygag0o
GIxg229ISlCOinw+C+CPzFQiSvGrVKxsc7KNgrEE6oDu1JQXATeT8guaXZSY
NQy2uVAjocvlGJq4phraE1L1aW3YKVqt4pi+7Ce2vbUShsi5rA/V7CXBqHeW
l8zJv3eGk8WZ4SygrmvmjPjFLJxGtr1EdQi8caCNQ4ntrKSZkarTCP00e9Vg
BZwVkFq1vFYWkHyOvOu+VMIv2R0haEAvOQ704SMopTGUPW3cgHQ7sAq7XxwT
ibiZzTZ3e/o+jyhU/ujhk6eQynnLlTdDmzdB7jiQMYLHrNYhdub+sgHYxr4F
VAF5cK136Tm3dpaHqpipe19+KcAzydgjmG1ioXEVCgwzhZpp47P7NOYoIytE
djOmwRA3vfPsDyTK1R2QOn7MM8ii7OaI0klhpYY4x5IlMaiJ0koXTb6XFO6Q
c5ec4DT7SE7VdX6j4KFWERqmBYNt4cR4NJcWjiX+LoUEutnvIuEquc7sqSIa
aPhonAiRUJmKLNZsyv83ptnuykJAaWXJQQwc9ivdnxvnfohKcUybaZ7kqqyD
YgsxVMHMU47jYM3Mh0I0m62UV4aiYNEHZmcfigfmfYyoBRExTtKKAs7tbXWR
HmQ9k2tcR+7NUAH+Gj1JCCOPJQR2LGC2ckQ0CM2G/qiQf6oAObcz48LTmDtY
fOgx+D0RHhmB/+5fIdU8zmnR2cSlHpZLXMvElGCiyfjsjzRX513NQXQ2jcAi
Xtp1UE3C1zQvK5z2aHwcjVYyzmmMpmK5IclUXMMA8LrrkatyHJIx7uBl+J3e
yWfqnyBNqeZlCQM9fvrssQQNkMGHJboQYiGaxpMXkohLfpCk5N6NhDFpE6dq
Vkaxwb6KSyb1BJqMYDUFUarvNCo0cEmSBuDW5grlPGlIdMzss+Loo6rDpTBt
LhHNiOs3RBYIvwLmusqRx+PIAyv7RmD2vs/nXq48PX0sgJUHsQ8n6ujOeAdf
c3t94gEDvx4LzOu4vIIzv26zjc2tG+Y9RhG3euHm5GLmUtb0pShQm8652Ixi
/VRbKURi2cv5cF6gWos4GlTXybSm2c9rJJ4KecakKbnVNI201q/b9x6ExP0X
LAv8Lbt37dGxmEfcL4JRxnBGHSfVVZkYByRe2xsBwJCUgNy9LgqyD71S4ydO
RRefGVLWuzSaskx6J7Earugl7NC+NhurpjP2folYqeNsmF4YV097M2kRchT9
PsO5XtUWK453OgXNTDdU5YyFopiBS9IwrA1LMhPRqSKC/c/wJU7XkGdRfdrx
WXV90xam1tgXkOXnWpCejk2beQ1REg3NG/JCQ2es9Zv5fNdazIDosi+Qntsp
kAHtprg0l0qJk8o50Lu+2fgkrdA1Ai/75X0jlP/LEPo6ZgFpfBUHt5DK10bF
dGFDzU2W6tsOyqySk72M9fsApB2MwccmhTBcosll+ZUhtLeKMEZUGtsrzHtU
FfkX1IyIOrGWFPiTgmWAX3ZedO272AMCsZyFaLKD7dCz4x4JZLzDRuxUoZE5
WsMUqEbMqR1CuGUX1Z6AFniv3iTuKYqBfCUQFocE+bZclR46efT4kc8mVFVJ
b0DEkPTURJ/dNiTjbsa+PqTk5jbKpL66Z2mc4TRGMdnPTbD3zBUNigGc8bAJ
gvdP+Y9zzX7xn/LE315cXtgoT79/qmGP7OXHzxcBSFCGAdzvq6uQrBOShtEy
YltIFQTS+sio6IctVhiSC5UC0ywyDaOHkVqx/3QICHS+94FnAojjQU79XvUe
7yoOfzk4YcEmciHHwtLCsScXr1++vPzt5T/+/PDl9OXniTww0Qe6yenJgycn
3z+AAcEvN2pCfCMlVISJavm6T+nlQ3j8/WM1pjmOsm+wkj4TmZwqHbNPLn1t
0Cf4endaJmC9nYrhKG3eEE8e5ejZiceAxqiL9L9dSFUin5PX95p9wwwi9jG7
nJZzowX09vwmX3B9V2xrwm0KdDUrXGQsq3S6o2TF5Ck7BqJtNWcgKMk0v/VY
QTlWcsnSrbgTghfQreUBkVapBKVVqR2l+i5ZxbLMs5c5E7Tc6UMM1zQnktld
pjmcgP8Tu2hCO0eCBqvtyRWPP3XRKqMeNJwy6QHsDkkwV/lcUjc8URyV02I6
KLfAAZFlzICiGAG7sltbDwF9Q5tDDR0nBksstYkv5gXQAeTWckig1pQ+O92q
mX8BEQU8jK0KoNTC3mV/PM0+HZq1uiuzkBMqB3JhOuSltpzwBVERlz05MS5b
7lpeDGrj83pexGDYB6mUvJOHGNJkK7tmRtp0RXVVqIcu+JSQYTHo7WByG9FT
h2jkWMKcEkEUmfvpnIQtzehHaxriG0MAkKd/ouYxhs97IvWvjXOVZEnZZykL
vJFNRhmd+1ygis+IK1Tman2Ir84cvEfrUcDgKLADxJkFvMAiHkRGt9fo5Fxj
61E8qBLudiT9DpACXg89SzHJSaTAWRFDiukr8f1UFCha9fR7LEaL0VX/gOWt
oEa3NiovRs02eIDIZFaC++l9voqaWR56pQJ6ZRAXhLIMBOa1rbq95LJeAav1
4B3n8MB+3NWg4CJvGSQBchnwDNjrcAeaLq+0H5X1w0mbH6SoALhfskXd3VV/
pkmIMB0nuSArvvatgriwVitKtJxvuasS8jzjZObWZw1EqVIMLqjdMXbgz4nU
gyDNWeKblgsudXR45YycU4alYqAyFP8u4z4CxKw2O02Y0iXAZSbJgqRuMgrF
ZbHGXiZg8YebUCoRlX2EBl6576EFhBHNL0Qmxv1EvGulZYPeIWbnBBplw+47
Mp8gQktOMobyqJ3MCYHAGi65ZS4InMJEzpjKGBaVeOJYoK9s3dXXiADfaIYd
F6nhPX7Ng85PvlHUTd3nX128Yq7vMGCMs9ZmZQ1HbIGMCjmeuDpGdo+DTns6
kwMsTPROIx74A9sv/GLP04ZwSvWhGP6Snr2GbvPLKJMuSNYCrUJef5vOhHtp
FZ0Td8PHYEnC5FwLiSzdrNXwvHkM0+x8Ic0jxBrljT9YTs4byEkUXfkfPodb
ITV1ztEsqpJgC8rgQTNp/Z70t5qvxehjkYT8aR6b5Wnt6CQRTO/gM3o0aewb
K3EC20acXNqXZycnJ+Sh9kUvOUleapNhlHZh0CCVQ4jrwbGQmQAJSme3hyt9
XEZaO0WJNZBtQnt2YpZpEifpnAVIkEOrXWZxuMwXvICRQCYVJ7HZjgAmTs8h
5FE7bh5jUGMfGQqc6Bh8hFiCgIe8J6VuEV5tAokWxETljKFxalzUD1/6YEVi
tFHSAK0oKlYRMerLu2VbxGFc5/fTxw44uzG0bbjDGomSgjVBDAvzbrDVRWF8
rcPrNM7mhnTNtTSseViSa7VtOpz0dWM/+U2pnFL7zj7XzNCCjkj908HJaJs5
lgPz3ui6j7sbwmZ2fs9I5jColhggZyFf7+8OhGAfTYm+Q0s78D0mA76rGzZb
WCFhweaSFyUrT/I9m1ZaqbTFHwtz0g/W4ZrqlGY+F9JfSH8xu+A6T3u20Mc5
C1SvL33xH2M3fPgzbrX16vxfzZr5njMiAHmmfvnUY1TDJnyiV4z6LOwWXi/e
ZZxGCAdE1ZHRpM7ZF2vEgLCtk5OBlMxWNZsVtXaBEdJiNJbbVAGUiRFVq39i
O8MmpjGgjglUAwC6Rnul6ovY22GlyDuOhBV7MCQC+Dx1aGRYomFU9Y0BsGYW
f+ecoCTXbBgmMzcKL8b5vX19/uqYC+sPv1xMAW+7KeRRtklih28UrbAmCdWy
hToq0NwIuvgLmoWF2qYI/I3Vbzi/eDfQSoke7/ubUTYxpEQnJB019QhAGYzb
RbamCXISHsiP11B13JBA+RzzEKK7sxIJE3uXhuxjbHtw1GQgA2zOqzNRzQY+
a9cw2qfGgI1QCaV9OfBjOBOdpS9Jj2hWmqSl9bX6xXFkEiM0VsEQzFGdFcHz
wSpjxRyF+JkF3viiM6QYBoofS0JsMQxRvUtCVGzYKASKqkf6yuImpEVgemSx
lf3//d//p0ual1ivAFJe5A3mHrYEbHU81XkNxEKeRdUs1kvBzzKiCeUFU51a
zGhI7XtJN0xzOrm8nB+mzUCYSpoqqBhIuQ5tP0iAW/g5RLyHHeXilEiEOz1s
jTY7xJmBGaPWyOrKSNabj0zntfbJ0wh2UuCZRk5mUqotofKE2Ms+BhYupDnH
S/R0FCVh1UlLLeKUVFFRLlEnD/FjNCYa3CoLv0YtiGL95Ew/iXMdRVXvLLYX
WzB2AeJelFEj2xDb0OYK1n1wdrMXJUpiW6B9F7rtDm26QZkQJ9gpgpQVbQv/
2/vUNWMdHDXKt8yH3Cmngg5TChpbufgwMQrOJRoRoFXPgvmKLXopTxcckHOd
JCTKiU25enZjsfyjI1IkQBmbLa3YfLa96ryL2NQR3epGeMdASyFND0sttvUM
idCWvZNh/0lLUyufQjLP2/a2YyfBlyN342IvcSdKj4hXKpX6fgA1onyrG0XN
m2HCo4NlyfZB1N4ntkg1BzhdFU4h0BlHSRITLDjtNLzjHkKWT8cqMIJpBopH
+9HkmqMtpmvOtolN79ZUocjGVzcjpLsWKV5pPImi3irvtKeqF0POOgCSFwJ/
H4LI/shZ59np169npK+FQJj85fNHX6Vcf6Q5MdGfHn/9ejxWZkd2I+CTg4d/
INXcWtCwwazxvUNlMmZ4yVk5nNXUYNZnJ8gQ00wFQZFAiHtd02NXyYokmfWx
lLRX9KXPAjDkoviKCqtSKyzhNwzkRvIqUckw89Bi6Uh7LB1z08eTR9kRqRH3
Bu2sjw/LyUjq+owqS9WtIigv9Q/S3Cq0k4gZltuV+SxmwQkG01bqIoooO9lv
7selefvkweRbNR/9uxzrUDgak1UrLU+SlzpnroKkf2kZUYpWJ3JlLk2tiBh+
jQ3ipH3JEPK5VsaVUc5yZkiw5LszIBxBxMkcaClz6Snt1OBe0uPsJZNsNufB
dv+X+uTkl3T7fQV2GPUsE9775dH33/+isJLr8iVid1bvSrLul0cYjESPFyzS
fReSIuQ0cMTCevP74kLJZbIW/7kbVTnRWHvD1x2MuOzR8PFBx2fJghVsgp9m
E7iwBueooPnLMq4nsWhKtmTvpMfom1WL/SjwL203Ft5srRS7bKNumQyC3Oyn
dw9KoLPtuhVPISpHFiOPC2zlz+aUe1OotGxkdYshcVY7sjhJOvs4hFWfHqpM
9nCsS+ZhY0EplpK3CcpT+WfxWDQVHbTgvBuD4V3gKB8+uouh2JJgiWHBB98e
3u0p9JbtNylNUyzvKAbzOLqxF/vx8Z2s5fgOWc4kNisOLLh9Ds/bCFDZDy3d
9sJbYzvu1thOc3d45+4Qy8Au+K/GWZxZDP+NcRa3Z/fcFmf5HLr5cHWt1fiI
Y/CQtHun8OAyPaxQDRWy6wew15PpI1+NIj4MFyj1Uk5OtvfK0mFqy2ZVDw4Q
OU2zU3lhWVCcORSHgJq4XOvhyYMx/XOKf54yOvXw5JmviniMat1j32NY3C7T
P5b4dEvJH6MHUvam2aR9aFdopldRJylb9KXEYCDHIepJygCj3J8z3FixstlH
J0rUo1XC2hYo1uDgUMs6uEFuGl+soZ+Hii6rkdTN19JWyR/mhDQU6qWdIS19
oWm+kD/4peObewqIrfAyDmdohL5PHd+yM+mpUTWSqlkAkErcRCMi3XQHIqdK
1tP9BTPeKlsqi4qqZKHQJE8p3nNFOTkkZqGAH15fTvnysCxkRPr7GGDu6TjR
82zBETkxUxJFsTQymB1EJZ8/JWey1QJiiS5lOumoR5bHdpJkCgMHxZWS9g3d
brPhO02sqZ+vm16XW+CWf8r+mv/9KaKOP2WX/hz/ROOdCzKeTO1X9pLGwM7Y
2LQ79jON98q37pRQ6x3jRvPDjoafn/rx0DFPoiZllDzGIiZnCZKJBLEGlhra
SDIcpdifnocos2PJtCIUDUjuZv1gizBJirnF/jhnfO9bM33UrSX1SqKWs8LN
YrmFfAb2PBJS22vVERtXyExDH6nA8WrOHlj/MI9or6pV5Oy8bEkBYWXzUFJY
di7Scr/eEyYpuYyYKEKgI87FbVYgjNrnS7o9wjuSZu4eZMafj5Ucxx5jTr0g
Y/VpUvHhW6TtyRMAGnTsY2lFGjuZ6mRty/gOE0mkzCuLKN7rhgdsSWaW9U3G
izWmCjC52f6cF3ouiVxyEWBUCwhkVJIgpWT2KE6yPLZeIhI5snZuy2iW2VHa
zxqlScfIxIi5UpvETW8tpx2cLpNmaAVmk4hSbvzKOXa1aa5Cfwzb/7OQRsDa
I7S10LI8NierUr9p7ogHX0wFH8mVW3boxz6Ktqvza0EKxYeJbxWIIdG3cuBv
5MC/fWdNN+42tc9/t3evUtpdN7sMofK40DZ+CMwVA+QMBuGKraglo+8ZZDdI
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
SV06oUu7AAA=

-->

</rfc>

