<?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.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-httpbis-origin-h3-01" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.0 -->
  <front>
    <title abbrev="ORIGIN in HTTP/3">The ORIGIN Extension in HTTP/3</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-origin-h3-01"/>
    <author initials="M." surname="Bishop" fullname="Mike Bishop">
      <organization>Akamai</organization>
      <address>
        <email>mbishop@evequefou.be</email>
      </address>
    </author>
    <date/>
    <area>Applications</area>
    <workgroup>HTTPbis</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>The ORIGIN frame for HTTP/2 is equally applicable to HTTP/3, but
needs to be separately registered. This document describes the ORIGIN
frame for HTTP/3.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="problems">
      <name>Introduction</name>
      <t>Existing RFCs define extensions to HTTP/2 <xref target="HTTP2"/> which remain useful in
HTTP/3. <xref section="A.2.3" sectionFormat="of" target="HTTP3"/> describes the required updates for HTTP/2
frames to be used with HTTP/3.</t>
      <t><xref target="ORIGIN"/> defines the HTTP/2 ORIGIN frame, which indicates what
origins are available on a given connection.  It defines a single HTTP/2 frame
type.</t>
    </section>
    <section anchor="frame-origin">
      <name>The ORIGIN HTTP/3 Frame</name>
      <t>The ORIGIN HTTP/3 frame allows a server to indicate what origin(s)
(<xref target="RFC6454"/>) the server would like the client to consider as members of the
Origin Set (<xref section="2.3" sectionFormat="of" target="ORIGIN"/>) for the connection within which it
occurs.</t>
      <t>The semantics of the frame payload are identical to those of the HTTP/2 frame
defined in <xref target="ORIGIN"/>. Where HTTP/2 reserves Stream 0 for frames related to the
state of the connection, HTTP/3 defines a pair of unidirectional streams called
"control streams" for this purpose.  Where <xref target="ORIGIN"/> indicates that the ORIGIN
frame should be sent on Stream 0, this should be interpreted to mean the HTTP/3
control stream.  The ORIGIN frame is sent from servers to clients on the
server's control stream.</t>
      <section anchor="frame-layout">
        <name>Frame Layout</name>
        <t>The ORIGIN frame has a nearly identical layout to that used in HTTP/2, restated
here for clarity.  The ORIGIN frame type is 0xc (decimal 12) as in HTTP/2. The
payload contains zero or more instances of the Origin-Entry field.</t>
        <figure>
          <name>ORIGIN Frame Layout</name>
          <artwork type="ascii-art"><![CDATA[
HTTP/3 Origin-Entry {
  Origin-Len (16),
  ASCII-Origin (..),
}

HTTP/3 ORIGIN Frame {
  Type (i) = 0x0c,
  Length (i),
  Origin-Entry (..) ...,
}
]]></artwork>
        </figure>
        <t>An Origin-Entry is a length-delimited string. Specifically, it contains two
fields:</t>
        <dl>
          <dt>Origin-Len:</dt>
          <dd>
            <t>An unsigned, 16-bit integer indicating the length, in octets, of
the ASCII-Origin field.</t>
          </dd>
          <dt>ASCII-Origin:</dt>
          <dd>
            <t>An OPTIONAL sequence of characters containing the ASCII serialization of an
origin (<xref section="6.2" sectionFormat="comma" target="RFC6454"/>) that the sender asserts this connection is
or could be authoritative for.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>This document introduces no new security considerations beyond those discussed
in <xref target="ORIGIN"/> and <xref target="HTTP3"/>.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document registers a frame type in the "HTTP/3 Frame Type"
registry (<xref target="HTTP3"/>).</t>
      <table anchor="iana-frame-table">
        <name>Registered HTTP/3 Frame Types</name>
        <thead>
          <tr>
            <th align="left">Frame Type</th>
            <th align="center">Value</th>
            <th align="left">Specification</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">ORIGIN</td>
            <td align="center">0xc</td>
            <td align="left">
              <xref target="frame-origin"/></td>
          </tr>
        </tbody>
      </table>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="HTTP2">
          <front>
            <title>HTTP/2</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <author fullname="C. Benfield" initials="C." role="editor" surname="Benfield">
              <organization/>
            </author>
            <date month="June" year="2022"/>
            <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 latency by introducing field compression and allowing multiple concurrent exchanges on the same connection.</t>
              <t>This document obsoletes RFCs 7540 and 8740.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9113"/>
          <seriesInfo name="DOI" value="10.17487/RFC9113"/>
        </reference>
        <reference anchor="HTTP3">
          <front>
            <title>HTTP/3</title>
            <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop">
              <organization/>
            </author>
            <date month="June" year="2022"/>
            <abstract>
              <t>The QUIC transport protocol has several features that are desirable in a transport for HTTP, such as stream multiplexing, per-stream flow control, and low-latency connection establishment.  This document describes a mapping of HTTP semantics over QUIC.  This document also identifies HTTP/2 features that are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP/3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9114"/>
          <seriesInfo name="DOI" value="10.17487/RFC9114"/>
        </reference>
        <reference anchor="ORIGIN">
          <front>
            <title>The ORIGIN HTTP/2 Frame</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham">
              <organization/>
            </author>
            <author fullname="E. Nygren" initials="E." surname="Nygren">
              <organization/>
            </author>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document specifies the ORIGIN frame for HTTP/2, to indicate what origins are available on a given connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8336"/>
          <seriesInfo name="DOI" value="10.17487/RFC8336"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC6454">
          <front>
            <title>The Web Origin Concept</title>
            <author fullname="A. Barth" initials="A." surname="Barth">
              <organization/>
            </author>
            <date month="December" year="2011"/>
            <abstract>
              <t>This document defines the concept of an "origin", 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 "Origin", 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>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
