<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.5.6 -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-httpbis-proxy-status-07" category="std" obsoletes="" updates="" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.10.0 -->
  <front>
    <title abbrev="Proxy-Status Header">The Proxy-Status HTTP Response Header Field</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-proxy-status-07"/>
    <author initials="M." surname="Nottingham" fullname="Mark Nottingham">
      <organization>Fastly</organization>
      <address>
        <postal>
          <postalLine>Prahran</postalLine>
          <postalLine>Australia</postalLine>
        </postal>
        <email>mnot@mnot.net</email>
        <uri>https://www.mnot.net/</uri>
      </address>
    </author>
    <author initials="P." surname="Sikora" fullname="Piotr Sikora">
      <organization>Google</organization>
      <address>
        <email>piotrsikora@google.com</email>
      </address>
    </author>
    <date/>
    <area>Applications and Real-Time</area>
    <workgroup>HTTP</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document defines the Proxy-Status HTTP field to convey the details of intermediary response handling, including generated errors.</t>
    </abstract>
    <note>
      <name>Note to Readers</name>
      <t><em>RFC EDITOR: please remove this section before publication</em></t>
      <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="https://httpwg.org/">https://httpwg.org/</eref>; source code and issues list for this draft can be found at <eref target="https://github.com/httpwg/http-extensions/labels/proxy-status">https://github.com/httpwg/http-extensions/labels/proxy-status</eref>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>HTTP intermediaries (see <xref section="3.7" sectionFormat="of" target="HTTP" format="default"/>) -- including both forward proxies and gateways (also known as "reverse proxies") -- have become an increasingly significant part of HTTP deployments. In particular, reverse proxies and Content Delivery Networks (CDNs) form part of the critical infrastructure of many Web sites.</t>
      <t>Typically, HTTP intermediaries forward requests towards the origin server (inbound) and then forward their responses back to clients (outbound). However, if an error occurs before a response is obtained from an inbound server, the response is often generated by the intermediary itself.</t>
      <t>HTTP accommodates these types of errors with a few status codes; for example, 502 Bad Gateway and 504 Gateway Timeout. However, experience has shown that more information is necessary to aid debugging and communicate what's happened to the client. Additionally, intermediaries sometimes want to convey additional information about their handling of a response, even if they did not generate it.</t>
      <t>To enable these uses, <xref target="header" format="default"/> defines a new HTTP response field to allow intermediaries to convey details of their handling of a response. <xref target="params" format="default"/> enumerates the information that can be added to the field by intermediaries, which can be extended as per <xref target="register-param" format="default"/>. <xref target="error-types" format="default"/> defines a set of error types for use when a proxy encounters an issue when obtaining a response for the request; these can likewise be extended as per <xref target="register-error" format="default"/>.</t>
      <section anchor="notational-conventions" numbered="true" toc="default">
        <name>Notational Conventions</name>
        <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" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they appear in all capitals, as shown here.</t>
        <t>This specification uses Structured Fields <xref target="STRUCTURED-FIELDS" format="default"/> to specify syntax and parsing, and ABNF <xref target="RFC5234" format="default"/> as a shorthand for that syntax. The terms sf-list, sf-item, sf-string, sf-token, sf-integer and key refer to the structured types defined therein.</t>
        <t>Note that in this specification, "proxy" is used to indicate both forward and reverse proxies, otherwise known as gateways. "Next hop" indicates the connection in the direction leading to the origin server for the request.</t>
      </section>
    </section>
    <section anchor="header" numbered="true" toc="default">
      <name>The Proxy-Status HTTP Field</name>
      <t>The Proxy-Status HTTP response field allows an intermediary to convey additional information about its handling of a response and its associated request. The syntax of this header field conforms to <xref target="STRUCTURED-FIELDS" format="default"/>.</t>
      <t>It is a List (<xref section="3.1" sectionFormat="comma" target="STRUCTURED-FIELDS" format="default"/>):</t>
      <sourcecode type="abnf"><![CDATA[
Proxy-Status   = sf-list
]]></sourcecode>
      <t>Each member of the list represents an intermediary that has handled the response. The first member of the list represents the intermediary closest to the origin server, and the last member of the list represents the intermediary closest to the user agent.</t>
      <t>For example:</t>
      <sourcecode type="http-message"><![CDATA[
Proxy-Status: revproxy1.example.net, ExampleCDN
]]></sourcecode>
      <t>indicates that this response was handled first by revproxy1.example.net (a reverse proxy adjacent to the origin server) and then ExampleCDN.</t>
      <t>Intermediaries determine when it is appropriate to add the Proxy-Status field to a response. Some might decide to append to it to all responses, whereas others might only do so when specifically configured to, or when the request contains a header field that activates a debugging mode.</t>
      <t>Each member of the list identifies the intermediary that inserted the value, and MUST have a type of either sf-string or sf-token. Depending on the deployment, this might be a service name (but not a software or hardware product name; e.g., "Example CDN"is appropriate, but "ExampleProxy" is not, because it doesn't identify the deployment), a hostname ("proxy-3.example.com"), an IP address, or a generated string.</t>
      <t>Parameters on each member (as per <xref section="3.1.2" sectionFormat="of" target="STRUCTURED-FIELDS" format="default"/>) convey additional information about that intermediary's handling of the response and its associated request; see <xref target="params" format="default"/>. While all of these parameters are OPTIONAL, intermediaries are encouraged to provide as much information as possible (but see <xref target="security" format="default"/> for security considerations in doing so).</t>
      <t>When adding a value to the Proxy-Status field, intermediaries SHOULD preserve the existing members of the field to allow debugging of the entire chain of intermediaries handling the request, unless explicitly configured to remove them (e.g., to prevent internal network details from leaking; see <xref target="security" format="default"/>).</t>
      <t>Origin servers MUST NOT generate the Proxy-Status field.</t>
      <t>Proxy-Status MAY be sent as a HTTP trailer field. For example, if an intermediary is streaming a response and the inbound connection suddenly terminates, Proxy-Status can only be appended to the trailer section of the outbound message, since the header section has already been sent. However, because it might be silently discarded along the path to the user agent (as is the case for all trailer fields; see <xref section="6.5" sectionFormat="of" target="HTTP" format="default"/>), Proxy-Status SHOULD NOT be sent as a trailer field unless it is not possible to send it in the header section.</t>
      <t>To allow recipients to reconstruct the relative ordering of Proxy-Status members conveyed in trailer fields with those conveyed in header fields, an intermediary MUST NOT send Proxy-Status as a trailer field unless it has also generated a Proxy-Status header field with the same member (although potentially different parameters) in that message.</t>
      <t>For example, a proxy identified as 'ThisProxy' that receives a response bearing a header field:</t>
      <sourcecode type="http-message"><![CDATA[
Proxy-Status: SomeOtherProxy
]]></sourcecode>
      <t>would add its own entry to the header field:</t>
      <sourcecode type="http-message"><![CDATA[
Proxy-Status: SomeOtherProxy, ThisProxy
]]></sourcecode>
      <t>thus allowing it to append a trailer field:</t>
      <sourcecode type="http-message"><![CDATA[
Proxy-Status: ThisProxy; error=read_timeout
]]></sourcecode>
      <t>... which would thereby allow a downstream recipient to understand that processing by 'SomeOtherProxy' occurred before 'ThisProxy'.</t>
      <t>A client MAY promote the Proxy-Status trailer field into a header field by following these steps:</t>
      <ol spacing="normal" type="1"><li>
          <t>For each member trailer_member of the Proxy-Status trailer field value:
          </t>
          <ol spacing="normal" type="1"><li>Let header_member be the first (left-most) value of the Proxy-Status header field value, comparing the sf-token or sf-string character-by-character and without consideration of parameters.</li>
            <li>If no matching header_member is found, continue processing the next trailer_member.</li>
            <li>Replace header_member with trailer_member in its entirety, including any parameters.</li>
          </ol>
        </li>
        <li>Remove the Proxy-Status trailer field, if empty.</li>
      </ol>
      <section anchor="params" numbered="true" toc="default">
        <name>Proxy-Status Parameters</name>
        <t>This section lists parameters that can be used on the members of the Proxy-Status field. Unrecognised parameters MUST be ignored.</t>
        <section anchor="error" numbered="true" toc="default">
          <name>error</name>
          <t>The <tt>error</tt> parameter's value is an sf-token that is a Proxy Error Type. When present, it indicates that the intermediary encountered an issue when obtaining this response.</t>
          <t>The presence of some Proxy Error Types indicates that the response was generated by the intermediary itself, rather than being forwarded from the origin server. This is the case when, for example, the origin server can't be contacted, so the proxy has to create its own response.</t>
          <t>Other Proxy Error Types can be added to (potentially partial) responses that were generated by the
origin server or some other inbound server. For example, if the forward connection abruptly closes, an intermediary might add Proxy-Status with an appropriate error as a trailer field.</t>
          <t>Proxy Error Types that are registered with a 'Only generated by intermediaries' value of 'true' indicate that they can only occur on responses generated by the intermediary. If the value is 'false', the response might be generated by the intermediary or an inbound server.</t>
          <t><xref target="error-types" format="default"/> lists the Proxy Error Types defined in this document; new ones can be defined using the procedure outlined in <xref target="register-error" format="default"/>.</t>
          <t>For example:</t>
          <sourcecode type="http-message"><![CDATA[
HTTP/1.1 504 Gateway Timeout
Proxy-Status: ExampleCDN; error=connection_timeout
]]></sourcecode>
          <t>indicates that this 504 response was generated by ExampleCDN, due to a connection timeout when going forward.</t>
          <t>Or:</t>
          <sourcecode type="http-message"><![CDATA[
HTTP/1.1 429 Too Many Requests
Proxy-Status: r34.example.net; error=http_request_error, ExampleCDN
]]></sourcecode>
          <t>indicates that this 429 Too Many Requests response was generated by the reverse proxy, not the CDN or the origin.</t>
          <t>When sending the error parameter, the most specific Proxy Error Type SHOULD be sent, provided that it accurately represents the error condition. If an appropriate Proxy Error Type is not defined, there are a number of generic error types (e.g., proxy_internal_error, http_protocol_error) that can be used. If they are not suitable, consider registering a new Proxy Error Type (see <xref target="register-error" format="default"/>).</t>
          <t>Each Proxy Error Type has a Recommended HTTP Status Code. When generating a HTTP response containing <tt>error</tt>, its HTTP status code SHOULD be set to the Recommended HTTP Status Code. However, there may be circumstances (e.g., for backwards compatibility with previous behaviours, a status code has already been sent) when another status code might be used.</t>
          <t>Proxy Error Types can also define any number of extra parameters for use with that type. Their use, like all parameters, is optional. As a result, if an extra parameter is used with a Proxy Error Type for which it is not defined, it will be ignored.</t>
        </section>
        <section anchor="next-hop" numbered="true" toc="default">
          <name>next-hop</name>
          <t>The <tt>next-hop</tt> parameter's value is an sf-string or sf-token that identifies the intermediary or origin server selected (and used, if contacted) to obtain this response. It might be a hostname, IP address, or alias.</t>
          <t>For example:</t>
          <sourcecode type="http-message"><![CDATA[
Proxy-Status: cdn.example.org; next-hop=backend.example.org:8001
]]></sourcecode>
          <t>indicates that cdn.example.org used backend.example.org:8001 as the next hop for this request.</t>
        </section>
        <section anchor="next-protocol" numbered="true" toc="default">
          <name>next-protocol</name>
          <t>The <tt>next-protocol</tt> parameter's value indicates the ALPN protocol identifier <xref target="RFC7301" format="default"/> of the protocol used by the intermediary to connect to the next hop when obtaining this response.</t>
          <t>The value MUST be either an sf-token or sf-binary, representing a TLS Application-Layer Protocol Negotiation (ALPN) Protocol ID (see <eref target="https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids">https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids</eref>). If the protocol identifier is able to be expressed as an sf-token using ASCII encoding, that form MUST be used.</t>
          <t>For example:</t>
          <sourcecode type="http-message"><![CDATA[
Proxy-Status: "proxy.example.org"; next-protocol=h2
]]></sourcecode>
          <t>Note that the APLN identifier is being used here to identify the protocol in use; it may or may not have been actually used in the protocol negotiation.</t>
        </section>
        <section anchor="received-status" numbered="true" toc="default">
          <name>received-status</name>
          <t>The <tt>received-status</tt> parameter's value indicates the HTTP status code that the intermediary received from the next hop server when obtaining this response.</t>
          <t>The value MUST be an sf-integer.</t>
          <t>For example:</t>
          <sourcecode type="http-message"><![CDATA[
Proxy-Status: ExampleCDN; received-status=200
]]></sourcecode>
        </section>
        <section anchor="details" numbered="true" toc="default">
          <name>details</name>
          <t>The <tt>details</tt> parameter's value is an sf-string containing additional information not captured anywhere else. This can include implementation-specific or deployment-specific information.</t>
          <t>For example:</t>
          <sourcecode type="http-message"><![CDATA[
Proxy-Status: proxy.example.net; error="http_protocol_error";
              details="Malformed response header: space before colon"
]]></sourcecode>
        </section>
      </section>
      <section anchor="register-param" numbered="true" toc="default">
        <name>Defining New Proxy-Status Parameters</name>
        <t>New Proxy-Status Parameters can be defined by registering them in the HTTP Proxy-Status Parameters registry.</t>
        <t>Registration requests are reviewed and approved by Expert Review, as per <xref section="4.5" sectionFormat="comma" target="RFC8126" format="default"/>. A specification document is appreciated, but not required.</t>
        <t>The Expert(s) should consider the following factors when evaluating requests:</t>
        <ul spacing="normal">
          <li>Community feedback</li>
          <li>If the value is sufficiently well-defined</li>
          <li>Generic parameters are preferred over vendor-specific, application-specific or deployment-specific values. If a generic value cannot be agreed upon in the community, the parameter's name should be correspondingly specific (e.g., with a prefix that identifies the vendor, application or deployment).</li>
          <li>Parameter names should not conflict with registered extra parameters in the Proxy Error Type Registry.</li>
        </ul>
        <t>Registration requests should use the following template:</t>
        <ul spacing="normal">
          <li>Name: [a name for the Proxy-Status Parameter that matches key]</li>
          <li>Description: [a description of the parameter semantics and value]</li>
          <li>Reference: [to a specification defining this parameter; optional]</li>
        </ul>
        <t>See the registry at <eref target="https://iana.org/assignments/http-proxy-status">https://iana.org/assignments/http-proxy-status</eref> for details on where to send registration requests.</t>
      </section>
      <section anchor="error-types" numbered="true" toc="default">
        <name>Proxy Error Types</name>
        <t>This section lists the Proxy Error Types defined by this document. See <xref target="register-error" format="default"/> for information about defining new Proxy Error Types.</t>
        <t>Note that implementations might not produce all Proxy Error Types. The set of types below is designed to map to existing states in implementations, and so may not be applicable to some.</t>
        <section anchor="dns-timeout" numbered="true" toc="default">
          <name>DNS Timeout</name>
          <ul spacing="normal">
            <li>Name: dns_timeout</li>
            <li>Description: The intermediary encountered a timeout when trying to find an IP address for the next hop hostname.</li>
            <li>Extra Parameters: None.</li>
            <li>Recommended HTTP status code: 504</li>
            <li>Only generated by intermediaries: true</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="dns-error" numbered="true" toc="default">
          <name>DNS Error</name>
          <ul spacing="normal">
            <li>Name: dns_error</li>
            <li>Description: The intermediary encountered a DNS error when trying to find an IP address for the next hop hostname.</li>
            <li>
              <t>Extra Parameters:
              </t>
              <ul spacing="normal">
                <li>rcode: A sf-string conveying the DNS RCODE that indicates the error type. See <xref section="3" sectionFormat="comma" target="RFC8499" format="default"/>.</li>
                <li>info-code: A sf-integer conveying the Extended DNS Error Code info-code. See <xref target="RFC8914" format="default"/>.</li>
              </ul>
            </li>
            <li>Recommended HTTP status code: 502</li>
            <li>Only generated by intermediaries: true</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="destination-not-found" numbered="true" toc="default">
          <name>Destination Not Found</name>
          <ul spacing="normal">
            <li>Name: destination_not_found</li>
            <li>Description: The intermediary cannot determine the appropriate next hop to use for this request; for example, it may not be configured. Note that this error is specific to gateways, which typically require specific configuration to identify the "backend" server; forward proxies use in-band information to identify the origin server.</li>
            <li>Extra Parameters: None.</li>
            <li>Recommended HTTP status code: 500</li>
            <li>Only generated by intermediaries: true</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="destination-unavailable" numbered="true" toc="default">
          <name>Destination Unavailable</name>
          <ul spacing="normal">
            <li>Name: destination_unavailable</li>
            <li>Description: The intermediary considers the next hop to be unavailable; e.g., recent attempts to communicate with it may have failed, or a health check may indicate that it is down.</li>
            <li>Extra Parameters: None.</li>
            <li>Recommended HTTP status code: 503</li>
            <li>Only generated by intermediaries: true</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="destination-ip-prohibited" numbered="true" toc="default">
          <name>Destination IP Prohibited</name>
          <ul spacing="normal">
            <li>Name: destination_ip_prohibited</li>
            <li>Description: The intermediary is configured to prohibit connections to the next hop IP address.</li>
            <li>Extra Parameters: None.</li>
            <li>Recommended HTTP status code: 502</li>
            <li>Only generated by intermediaries: true</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="destination-ip-unroutable" numbered="true" toc="default">
          <name>Destination IP Unroutable</name>
          <ul spacing="normal">
            <li>Name: destination_ip_unroutable</li>
            <li>Description: The intermediary cannot find a route to the next hop IP address.</li>
            <li>Extra Parameters: None.</li>
            <li>Recommended HTTP status code: 502</li>
            <li>Only generated by intermediaries: true</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="connection-refused" numbered="true" toc="default">
          <name>Connection Refused</name>
          <ul spacing="normal">
            <li>Name: connection_refused</li>
            <li>Description: The intermediary's connection to the next hop was refused.</li>
            <li>Extra Parameters: None.</li>
            <li>Recommended HTTP status code: 502</li>
            <li>Only generated by intermediaries: true</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="connection-terminated" numbered="true" toc="default">
          <name>Connection Terminated</name>
          <ul spacing="normal">
            <li>Name: connection_terminated</li>
            <li>Description: The intermediary's connection to the next hop was closed before complete response was received.</li>
            <li>Extra Parameters: None.</li>
            <li>Recommended HTTP status code: 502</li>
            <li>Only generated by intermediaries: false</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="connection-timeout" numbered="true" toc="default">
          <name>Connection Timeout</name>
          <ul spacing="normal">
            <li>Name: connection_timeout</li>
            <li>Description: The intermediary's attempt to open a connection to the next hop timed out.</li>
            <li>Extra Parameters: None.</li>
            <li>Recommended HTTP status code: 504</li>
            <li>Only generated by intermediaries: true</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="connection-read-timeout" numbered="true" toc="default">
          <name>Connection Read Timeout</name>
          <ul spacing="normal">
            <li>Name: connection_read_timeout</li>
            <li>Description: The intermediary was expecting data on a connection (e.g., part of a response), but did not receive any new data in a configured time limit.</li>
            <li>Extra Parameters: None.</li>
            <li>Recommended HTTP status code: 504</li>
            <li>Only generated by intermediaries: false</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="connection-write-timeout" numbered="true" toc="default">
          <name>Connection Write Timeout</name>
          <ul spacing="normal">
            <li>Name: connection_write_timeout</li>
            <li>Description: The intermediary was attempting to write data to a connection, but was not able to (e.g., because its buffers were full).</li>
            <li>Extra Parameters: None.</li>
            <li>Recommended HTTP status code: 504</li>
            <li>Only generated by intermediaries: false</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="connection-limit-reached" numbered="true" toc="default">
          <name>Connection Limit Reached</name>
          <ul spacing="normal">
            <li>Name: connection_limit_reached</li>
            <li>Description: The intermediary is configured to limit the number of connections it has to the next hop, and that limit has been passed.</li>
            <li>Extra Parameters: None.</li>
            <li>Recommended HTTP status code: 503</li>
            <li>Only generated by intermediaries: true</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="tls-protocol-error" numbered="true" toc="default">
          <name>TLS Protocol Error</name>
          <ul spacing="normal">
            <li>Name: tls_protocol_error</li>
            <li>Description: The intermediary encountered a TLS error when communicating with the next hop, either during handshake or afterwards.</li>
            <li>Extra Parameters: None.</li>
            <li>Recommended HTTP status code: 502</li>
            <li>Only generated by intermediaries: false</li>
            <li>Reference: [this document]</li>
            <li>Notes: Not appropriate when a TLS alert is received; see tls_alert_received</li>
          </ul>
        </section>
        <section anchor="tls-certificate-error" numbered="true" toc="default">
          <name>TLS Certificate Error</name>
          <ul spacing="normal">
            <li>Name: tls_certificate_error</li>
            <li>Description: The intermediary encountered an error when verifying the certificate presented by the next hop.</li>
            <li>Extra Parameters: None.</li>
            <li>Recommended HTTP status code: 502</li>
            <li>Only generated by intermediaries: true</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="tls-alert-received" numbered="true" toc="default">
          <name>TLS Alert Received</name>
          <ul spacing="normal">
            <li>Name: tls_alert_received</li>
            <li>Description: The intermediary received a TLS alert from the next hop.</li>
            <li>
              <t>Extra Parameters:
              </t>
              <ul spacing="normal">
                <li>alert-id: an sf-integer containing the applicable value from the TLS Alerts registry. See {!RFC8446}}.</li>
                <li>alert-message: an sf-token or sf-string containing the applicable description string from the TLS Alerts registry. See <xref target="RFC8446" format="default"/>.</li>
              </ul>
            </li>
            <li>Recommended HTTP status code: 502</li>
            <li>Only generated by intermediaries: false</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="http-request-error" numbered="true" toc="default">
          <name>HTTP Request Error</name>
          <ul spacing="normal">
            <li>Name: http_request_error</li>
            <li>Description: The intermediary is generating a client (4xx) response on the origin's behalf. Applicable status codes include (but are not limited to) 400, 403, 405, 406, 408, 411, 413, 414, 415, 416, 417, 429.</li>
            <li>
              <t>Extra Parameters:
              </t>
              <ul spacing="normal">
                <li>status-code: an sf-integer containing the generated status code.</li>
                <li>status-phrase: an sf-string containing the generated status phrase.</li>
              </ul>
            </li>
            <li>Recommended HTTP status code: The applicable 4xx status code</li>
            <li>Only generated by intermediaries: true</li>
            <li>Reference: [this document]</li>
            <li>Notes: This type helps distinguish between responses generated by intermediaries from those generated by the origin.</li>
          </ul>
        </section>
        <section anchor="http-request-denied" numbered="true" toc="default">
          <name>HTTP Request Denied</name>
          <ul spacing="normal">
            <li>Name: http_request_denied</li>
            <li>Description: The intermediary rejected the HTTP request based on its configuration and/or policy settings. The request wasn't forwarded to the next hop.</li>
            <li>Extra Parameters: None.</li>
            <li>Recommended HTTP status code: 403</li>
            <li>Only generated by intermediaries: true</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="http-incomplete-response" numbered="true" toc="default">
          <name>HTTP Incomplete Response</name>
          <ul spacing="normal">
            <li>Name: http_response_incomplete</li>
            <li>Description: The intermediary received an incomplete response to the request from the next hop.</li>
            <li>Extra Parameters: None.</li>
            <li>Recommended HTTP status code: 502</li>
            <li>Only generated by intermediaries: false</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="http-response-header-section-too-large" numbered="true" toc="default">
          <name>HTTP Response Header Section Too Large</name>
          <ul spacing="normal">
            <li>Name: http_response_header_section_size</li>
            <li>Description: The intermediary received a response to the request whose header section was considered too large.</li>
            <li>
              <t>Extra Parameters:
              </t>
              <ul spacing="normal">
                <li>header-section-size: an sf-integer indicating how large the headers received were. Note that they might not be complete; i.e., the intermediary may have discarded or refused additional data.</li>
              </ul>
            </li>
            <li>Recommended HTTP status code: 502</li>
            <li>Only generated by intermediaries: false</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="http-response-header-field-line-too-large" numbered="true" toc="default">
          <name>HTTP Response Header Field Line Too Large</name>
          <ul spacing="normal">
            <li>Name: http_response_header_size</li>
            <li>Description: The intermediary received a response to the request containing an individual header field line that was considered too large.</li>
            <li>
              <t>Extra Parameters:
              </t>
              <ul spacing="normal">
                <li>header-name: an sf-string indicating the name of the header field that triggered the error.</li>
                <li>header-size: an sf-integer indicating the size of the header field that triggered the error.</li>
              </ul>
            </li>
            <li>Recommended HTTP status code: 502</li>
            <li>Only generated by intermediaries: false</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="http-response-body-too-large" numbered="true" toc="default">
          <name>HTTP Response Body Too Large</name>
          <ul spacing="normal">
            <li>Name: http_response_body_size</li>
            <li>Description: The intermediary received a response to the request whose body was considered too large.</li>
            <li>
              <t>Extra Parameters:
              </t>
              <ul spacing="normal">
                <li>body-size: an sf-integer indicating how large the body received was. Note that it may not have been complete; i.e., the intermediary may have discarded or refused additional data.</li>
              </ul>
            </li>
            <li>Recommended HTTP status code: 502</li>
            <li>Only generated by intermediaries: false</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="http-response-trailer-section-too-large" numbered="true" toc="default">
          <name>HTTP Response Trailer Section Too Large</name>
          <ul spacing="normal">
            <li>Name: http_response_trailer_section_size</li>
            <li>Description: The intermediary received a response to the request whose trailer section was considered too large.</li>
            <li>
              <t>Extra Parameters:
              </t>
              <ul spacing="normal">
                <li>trailer-section-size: an sf-integer indicating how large the trailers received were. Note that they might not be complete; i.e., the intermediary may have discarded or refused additional data.</li>
              </ul>
            </li>
            <li>Recommended HTTP status code: 502</li>
            <li>Only generated by intermediaries: false</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="http-response-trailer-field-line-too-large" numbered="true" toc="default">
          <name>HTTP Response Trailer Field Line Too Large</name>
          <ul spacing="normal">
            <li>Name: http_response_trailer_size</li>
            <li>Description: The intermediary received a response to the request containing an individual trailer field line that was considered too large.</li>
            <li>
              <t>Extra Parameters:
              </t>
              <ul spacing="normal">
                <li>trailer-name: an sf-string indicating the name of the trailer field that triggered the error.</li>
                <li>trailer-size: an sf-integer indicating the size of the trailer field that triggered the error.</li>
              </ul>
            </li>
            <li>Recommended HTTP status code: 502</li>
            <li>Only generated by intermediaries: false</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="http-response-transfer-coding-error" numbered="true" toc="default">
          <name>HTTP Response Transfer-Coding Error</name>
          <ul spacing="normal">
            <li>Name: http_response_transfer_coding</li>
            <li>Description: The intermediary encountered an error decoding the transfer-coding of the response.</li>
            <li>
              <t>Extra Parameters:
              </t>
              <ul spacing="normal">
                <li>coding: an sf-token containing the specific coding (from the HTTP Transfer Coding Registry) that caused the error.</li>
              </ul>
            </li>
            <li>Recommended HTTP status code: 502</li>
            <li>Only generated by intermediaries: false</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="http-response-content-coding-error" numbered="true" toc="default">
          <name>HTTP Response Content-Coding Error</name>
          <ul spacing="normal">
            <li>Name: http_response_content_coding</li>
            <li>Description: The intermediary encountered an error decoding the content-coding of the response.</li>
            <li>
              <t>Extra Parameters:
              </t>
              <ul spacing="normal">
                <li>coding: an sf-token containing the specific coding (from the HTTP Content Coding Registry) that caused the error.</li>
              </ul>
            </li>
            <li>Recommended HTTP status code: 502</li>
            <li>Only generated by intermediaries: false</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="http-response-timeout" numbered="true" toc="default">
          <name>HTTP Response Timeout</name>
          <ul spacing="normal">
            <li>Name: http_response_timeout</li>
            <li>Description: The intermediary reached a configured time limit waiting for the complete response.</li>
            <li>Extra Parameters: None.</li>
            <li>Recommended HTTP status code: 504</li>
            <li>Only generated by intermediaries: false</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="http-upgrade-failed" numbered="true" toc="default">
          <name>HTTP Upgrade Failed</name>
          <ul spacing="normal">
            <li>Name: http_upgrade_failed</li>
            <li>Description: The HTTP Upgrade between the intermediary and the next hop failed.</li>
            <li>Extra Parameters: None.</li>
            <li>Recommended HTTP status code: 502</li>
            <li>Only generated by intermediaries: true</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="http-protocol-error" numbered="true" toc="default">
          <name>HTTP Protocol Error</name>
          <ul spacing="normal">
            <li>Name: http_protocol_error</li>
            <li>Description: The intermediary encountered a HTTP protocol error when communicating with the next hop. This error should only be used when a more specific one is not defined.</li>
            <li>Extra Parameters: None.</li>
            <li>Recommended HTTP status code: 502</li>
            <li>Only generated by intermediaries: false</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="proxy-internal-response" numbered="true" toc="default">
          <name>Proxy Internal Response</name>
          <ul spacing="normal">
            <li>Name: proxy_internal_response</li>
            <li>Description: The intermediary generated the response locally, without attempting to connect to the next hop (e.g. in response to a request to a debug endpoint terminated at the intermediary).</li>
            <li>Extra Parameters: None.</li>
            <li>Recommended HTTP status code: The most appropriate status code for the response</li>
            <li>Only generated by intermediaries: true</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="proxy-internal-error" numbered="true" toc="default">
          <name>Proxy Internal Error</name>
          <ul spacing="normal">
            <li>Name: proxy_internal_error</li>
            <li>Description: The intermediary encountered an internal error unrelated to the origin.</li>
            <li>Extra Parameters: None</li>
            <li>Recommended HTTP status code: 500</li>
            <li>Only generated by intermediaries: true</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="proxy-configuration-error" numbered="true" toc="default">
          <name>Proxy Configuration Error</name>
          <ul spacing="normal">
            <li>Name: proxy_configuration_error</li>
            <li>Description: The intermediary encountered an error regarding its configuration.</li>
            <li>Extra Parameters: None</li>
            <li>Recommended HTTP status code: 500</li>
            <li>Only generated by intermediaries: true</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
        <section anchor="proxy-loop-detected" numbered="true" toc="default">
          <name>Proxy Loop Detected</name>
          <ul spacing="normal">
            <li>Name: proxy_loop_detected</li>
            <li>Description: The intermediary tried to forward the request to itself, or a loop has been detected using different means (e.g. <xref target="RFC8586" format="default"/>).</li>
            <li>Extra Parameters: None.</li>
            <li>Recommended HTTP status code: 502</li>
            <li>Only generated by intermediaries: true</li>
            <li>Reference: [this document]</li>
          </ul>
        </section>
      </section>
      <section anchor="register-error" numbered="true" toc="default">
        <name>Defining New Proxy Error Types</name>
        <t>New Proxy Error Types can be defined by registering them in the HTTP Proxy Error Types registry.</t>
        <t>Registration requests are reviewed and approved by Expert Review, as per <xref section="4.5" sectionFormat="comma" target="RFC8126" format="default"/>. A specification document is appreciated, but not required.</t>
        <t>The Expert(s) should consider the following factors when evaluating requests:</t>
        <ul spacing="normal">
          <li>Community feedback</li>
          <li>If the value is sufficiently well-defined</li>
          <li>Generic types are preferred over vendor-specific, application-specific or deployment-specific values. If a generic value cannot be agreed upon in the community, the types's name should be correspondingly specific (e.g., with a prefix that identifies the vendor, application or deployment).</li>
          <li>Extra Parameters should not conflict with registered Proxy-Status parameters.</li>
        </ul>
        <t>Registration requests should use the following template:</t>
        <ul spacing="normal">
          <li>Name: [a name for the Proxy Error Type that matches sf-token]</li>
          <li>Description: [a description of the conditions that generate the Proxy Error Type]</li>
          <li>Extra Parameters: [zero or more optional parameters, along with their allowable type(s)]</li>
          <li>Recommended HTTP status code: [the appropriate HTTP status code for this entry]</li>
          <li>Only generated by intermediaries: ['true' or 'false']</li>
          <li>Reference: [to a specification defining this error type; optional]</li>
          <li>Notes: [optional]</li>
        </ul>
        <t>If the Proxy Error Type might occur in responses that are not generated by the intermediary -- for example, when an error is detected as the response is streamed from a forward connection, causing a Proxy-Status trailer field to be appended -- the 'Only generated by intermediaries' should be 'false'. If the Proxy Error Type only occurs in responses that are generated by the intermediary, it should be 'true'.</t>
        <t>See the registry at <eref target="https://iana.org/assignments/http-proxy-status">https://iana.org/assignments/http-proxy-status</eref> for details on where to send registration requests.</t>
      </section>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>Upon publication, please create the HTTP Proxy-Status Parameters registry and the HTTP Proxy Error Types registry at <eref target="https://iana.org/assignments/http-proxy-status">https://iana.org/assignments/http-proxy-status</eref> and populate them with the types defined in <xref target="params" format="default"/> and <xref target="error-types" format="default"/> respectively; see <xref target="register-param" format="default"/> and <xref target="register-error" format="default"/> for its associated procedures.</t>
      <t>Additionally, please register the following entry in the Hypertext Transfer Protocol (HTTP) Field Name Registry:</t>
      <ul spacing="normal">
        <li>Field name: Proxy-Status</li>
        <li>Status: permanent</li>
        <li>Specification document(s): [this document]</li>
        <li>Comments:</li>
      </ul>
    </section>
    <section anchor="security" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>One of the primary security concerns when using Proxy-Status is leaking information that might aid an attacker. For example, information about the intermediary's configuration and back-end topology can be exposed, allowing attackers to directly target back-end services that are not prepared for high traffic volume or malformed inputs.  Some information might only be suitable to reveal to authorized parties.</t>
      <t>As a result, care needs to be taken when deciding to generate a Proxy-Status field and what information to include in it. Note that intermediaries are not required to generate a Proxy-Status field in any response, and can conditionally generate them based upon request attributes (e.g., authentication tokens, IP address).</t>
      <t>Likewise, generation of all parameters is optional, as is generation of the field itself. Also, the field's content is not verified; an intermediary can claim certain actions (e.g., sending a request over an encrypted channel) but fail to actually do that.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="HTTP">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="Roy T. Fielding">
              <organization>Adobe</organization>
            </author>
            <author fullname="Mark Nottingham">
              <organization>Fastly</organization>
            </author>
            <author fullname="Julian Reschke">
              <organization>greenbytes GmbH</organization>
            </author>
            <date day="12" month="September" year="2021"/>
            <abstract>
              <t>   The Hypertext Transfer Protocol (HTTP) is a stateless application-
   level protocol for distributed, collaborative, hypertext information
   systems.  This document describes the overall architecture of HTTP,
   establishes common terminology, and defines aspects of the protocol
   that are shared by all versions.  In this definition are core
   protocol elements, extensibility mechanisms, and the "http" and
   "https" Uniform Resource Identifier (URI) schemes.

   This document updates RFC 3864 and obsoletes RFC 2818, RFC 7231, RFC
   7232, RFC 7233, RFC 7235, RFC 7538, RFC 7615, RFC 7694, and portions
   of RFC 7230.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-semantics-19"/>
        </reference>
        <reference anchor="STRUCTURED-FIELDS">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham">
              <organization/>
            </author>
            <author fullname="P-H. Kamp" initials="P-H." surname="Kamp">
              <organization/>
            </author>
            <date month="February" year="2021"/>
            <abstract>
              <t>This document describes a set of data types and associated algorithms that are intended to make it easier and safer to define and handle HTTP header and trailer fields, known as "Structured Fields", "Structured Headers", or "Structured Trailers". It is intended for use by specifications of new HTTP fields that wish to use a common syntax that is more restrictive than traditional HTTP field values.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8941"/>
          <seriesInfo name="DOI" value="10.17487/RFC8941"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <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="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton">
              <organization/>
            </author>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <author fullname="T. Narten" initials="T." surname="Narten">
              <organization/>
            </author>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters.  To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper.  For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed.  This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC8499">
          <front>
            <title>DNS Terminology</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <author fullname="A. Sullivan" initials="A." surname="Sullivan">
              <organization/>
            </author>
            <author fullname="K. Fujiwara" initials="K." surname="Fujiwara">
              <organization/>
            </author>
            <date month="January" year="2019"/>
            <abstract>
              <t>The Domain Name System (DNS) is defined in literally dozens of different RFCs.  The terminology used by implementers and developers of DNS protocols, and by operators of DNS systems, has sometimes changed in the decades since the DNS was first defined.  This document gives current definitions for many of the terms used in the DNS in a single document.</t>
              <t>This document obsoletes RFC 7719 and updates RFC 2308.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="219"/>
          <seriesInfo name="RFC" value="8499"/>
          <seriesInfo name="DOI" value="10.17487/RFC8499"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <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">
          <front>
            <title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
            <author fullname="S. Friedl" initials="S." surname="Friedl">
              <organization/>
            </author>
            <author fullname="A. Popov" initials="A." surname="Popov">
              <organization/>
            </author>
            <author fullname="A. Langley" initials="A." surname="Langley">
              <organization/>
            </author>
            <author fullname="E. Stephan" initials="E." surname="Stephan">
              <organization/>
            </author>
            <date month="July" year="2014"/>
            <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="RFC8914">
          <front>
            <title>Extended DNS Errors</title>
            <author fullname="W. Kumari" initials="W." surname="Kumari">
              <organization/>
            </author>
            <author fullname="E. Hunt" initials="E." surname="Hunt">
              <organization/>
            </author>
            <author fullname="R. Arends" initials="R." surname="Arends">
              <organization/>
            </author>
            <author fullname="W. Hardaker" initials="W." surname="Hardaker">
              <organization/>
            </author>
            <author fullname="D. Lawrence" initials="D." surname="Lawrence">
              <organization/>
            </author>
            <date month="October" year="2020"/>
            <abstract>
              <t>This document defines an extensible method to return additional information about the cause of DNS errors. Though created primarily to extend SERVFAIL to provide additional information about the cause of DNS and DNSSEC failures, the Extended DNS Errors option defined in this document allows all response types to contain extended error information. Extended DNS Error information does not change the processing of RCODEs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8914"/>
          <seriesInfo name="DOI" value="10.17487/RFC8914"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol.  TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961.  This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker">
              <organization/>
            </author>
            <author fullname="P. Overell" initials="P." surname="Overell">
              <organization/>
            </author>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax.  Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications.  The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power.  The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges.  This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC8586">
          <front>
            <title>Loop Detection in Content Delivery Networks (CDNs)</title>
            <author fullname="S. Ludin" initials="S." surname="Ludin">
              <organization/>
            </author>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham">
              <organization/>
            </author>
            <author fullname="N. Sullivan" initials="N." surname="Sullivan">
              <organization/>
            </author>
            <date month="April" year="2019"/>
            <abstract>
              <t>This document defines the CDN-Loop request header field for HTTP. CDN-Loop addresses an operational need that occurs when an HTTP request is intentionally forwarded between Content Delivery Networks (CDNs), but is then accidentally or maliciously re-routed back into the original CDN causing a non-terminating loop.  The new header field can be used to identify the error and terminate the loop.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8586"/>
          <seriesInfo name="DOI" value="10.17487/RFC8586"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
8jowikl85I7IyUpaP/v6QnIT/gmQQv5kAHYAAA==

-->

</rfc>
