<?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-rfc version 1.6.17 (Ruby 3.1.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-httpbis-alias-proxy-status-00" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.3 -->
  <front>
    <title abbrev="DNS Aliases Proxy-Status">HTTP Proxy-Status Parameter for Next-Hop Aliases</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-alias-proxy-status-00"/>
    <author initials="T." surname="Pauly" fullname="Tommy Pauly">
      <organization>Apple, Inc.</organization>
      <address>
        <email>tpauly@apple.com</email>
      </address>
    </author>
    <date/>
    <area>Applications and Real-Time</area>
    <workgroup>HTTP</workgroup>
    <keyword>proxy status</keyword>
    <abstract>
      <t>This document defines an HTTP Proxy-Status Parameter that contains a list of aliases
received over DNS when establishing a connection to the next hop.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-httpbis-alias-proxy-status/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        HTTP Working Group mailing list (<eref target="mailto:ietf-http-wg@w3.org"/>),
        which is archived at <eref target="https://lists.w3.org/Archives/Public/ietf-http-wg/"/>.
        Working Group information can be found at <eref target="https://httpwg.org/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/httpwg/http-extensions/labels/alias-proxy-status"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The Proxy-Status HTTP response field <xref target="PROXY-STATUS"/> allows proxies to convey
information about how a proxied request was handled in HTTP responses sent to clients.
It defines a set of parameters that provide information, such as the name of the next
hop.</t>
      <t><xref target="PROXY-STATUS"/> defines a <tt>next-hop</tt> parameter, which can contain a hostname,
IP address, or alias of the next hop. This parameter can contain only one such item,
so it cannot be used to communicate a chain of aliases encountered during DNS resolution
when connecting to the next hop.</t>
      <t>Knowing the full chain of aliases that were used during DNS resolution is particularly
useful for clients of forward proxies, in which the client is requesting to connect
to a specific target hostname using the CONNECT method <xref target="HTTP"/> or
UDP proxying <xref target="CONNECT-UDP"/>. DNS aliases can be used to "cloak" hosts that
perform tracking or malicious activity behind more innocuous hostnames, and clients
such as web browsers use the chain of DNS aliases to influence behavior like cookie
usage policies <xref target="COOKIES"/> or blocking of malicious hosts.</t>
      <t>This document allows clients to receive the chain of DNS aliases for the next hop
by including the list of names in a new <tt>next-hop-aliases</tt> Proxy-Status parameter.</t>
      <section anchor="requirements">
        <name>Requirements</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"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      </section>
    </section>
    <section anchor="parameter">
      <name>next-hop-aliases Parameter</name>
      <t>The <tt>next-hop-aliases</tt> parameter's value is a String that contains one or more DNS names in
a comma-separated list. The items in the list include all names received in CNAME
records <xref target="DNS"/> during the course of resolving the next hop's hostname using DNS.
Since DNS names can include comma (<tt>,</tt>) characters in them, any commas that appear in a DNS
names MUST be represented using a percent-encoded <tt>%2C</tt> value instead. The aliases SHOULD
appear in the order in which they were received in DNS; that is, if a name has a CNAME record
with a first alias, which has a CNAME record for a second alias, the aliases should appear
in that order.</t>
      <t>For example:</t>
      <sourcecode type="example"><![CDATA[
Proxy-Status: proxy.example.net; next-hop=2001:db8::1;
    next-hop-aliases="tracker.example.com.,service1.example-cdn.com."
]]></sourcecode>
      <t>indicates that proxy.example.net, which used the IP address "2001:db8::1" as the next hop
for this request, encountered the CNAMEs "tracker.example.com." and "service1.example-cdn.com"
in the DNS resolution chain. Note that while this example includes both the <tt>next-hop</tt> and
<tt>next-hop-aliases</tt> parameters, <tt>next-hop-aliases</tt> can be included without including <tt>next-hop</tt>.</t>
      <t>The <tt>next-hop-aliases</tt> parameter only applies when DNS was used to resolve the next hop's name, and
does not apply in all situations. Clients can use the information in this parameter to determine
how to use the connection established through the proxy, but need to gracefully handle situations
in which this parameter is not present.</t>
    </section>
    <section anchor="sec-considerations">
      <name>Security Considerations</name>
      <t>The <tt>next-hop-aliases</tt> parameter does not include any DNSSEC information or imply that DNSSEC was used.
The information included in the parameter can only be trusted to be valid insofar as the client
trusts its proxy to provide accurate information. This information is intended to be used as
a hint, and SHOULD NOT be used for making security decisions about the identity of a resource accessed
through the proxy.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document registers the "next-hop-aliases" parameter
in the "HTTP Proxy-Status Parameters" registry
&lt;<eref target="https://www.iana.org/assignments/http-proxy-status"/>&gt;.</t>
      <dl>
        <dt>Name:</dt>
        <dd>
          <t>next-hop-aliases</t>
        </dd>
        <dt>Description:</dt>
        <dd>
          <t>A string containing one or more DNS alises used to establish a proxied connection
to the next hop.</t>
        </dd>
        <dt>Reference:</dt>
        <dd>
          <t>This document</t>
        </dd>
      </dl>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="PROXY-STATUS">
          <front>
            <title>The Proxy-Status HTTP Response Header Field</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham">
              <organization/>
            </author>
            <author fullname="P. Sikora" initials="P." surname="Sikora">
              <organization/>
            </author>
            <date month="June" year="2022"/>
            <abstract>
              <t>This document defines the Proxy-Status HTTP response field to convey the details of an intermediary's response handling, including generated errors.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9209"/>
          <seriesInfo name="DOI" value="10.17487/RFC9209"/>
        </reference>
        <reference anchor="HTTP">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding">
              <organization/>
            </author>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham">
              <organization/>
            </author>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke">
              <organization/>
            </author>
            <date month="June" year="2022"/>
            <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. </t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="CONNECT-UDP">
          <front>
            <title>Proxying UDP in HTTP</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi">
              <organization/>
            </author>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes how to proxy UDP in HTTP, similar to how the HTTP CONNECT method allows proxying TCP in HTTP. More specifically, this document defines a protocol that allows an HTTP client to create a tunnel for UDP communications through an HTTP server that acts as a proxy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9298"/>
          <seriesInfo name="DOI" value="10.17487/RFC9298"/>
        </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="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="DNS">
          <front>
            <title>Common DNS Operational and Configuration Errors</title>
            <author fullname="D. Barr" initials="D." surname="Barr">
              <organization/>
            </author>
            <date month="February" year="1996"/>
            <abstract>
              <t>This memo describes errors often found in both the operation of Domain Name System (DNS) servers, and in the data that these DNS servers contain.  This memo provides information for the Internet community. This memo does not specify an Internet standard of any kind.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1912"/>
          <seriesInfo name="DOI" value="10.17487/RFC1912"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="COOKIES">
          <front>
            <title>HTTP State Management Mechanism</title>
            <author fullname="A. Barth" initials="A." surname="Barth">
              <organization/>
            </author>
            <date month="April" year="2011"/>
            <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>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
