Visual RFC.
ALL RFCs / RFC 8336
Read the RFC ↗

RFC 8336 / START HERE

HTTP/2 ORIGIN, before the details

The ORIGIN HTTP/2 Frame. ORIGIN is a frame name, not an acronym. HTTP/2 means Hypertext Transfer Protocol version 2.

A connection is a communication path between a client and a server. HTTP/2 carries data in typed units called frames. This extension lets the server advertise origins that an existing connection could serve. An origin combines a scheme such as https, a host name and a port number.

Why it exists

Reusing one connection for several origins is called coalescing. Advertising suitable origins can avoid misdirected requests and extra connection setup. The advertisement still needs client processing and suitable certificate checks; it is not the HTTP Origin request header.

A familiar example

A fictional app already has a secure HTTP/2 connection for a.example. The server advertises https://img.example, so the app considers reusing that connection for an image request. It checks membership and certificate checks for that host first. The chapters show the fields, ignored frames, changing sets, alternative-service ports and how to retire a redundant connection.

Helpful background

You can start here without reading another RFC. If these ideas are unfamiliar, these short introductions may help.

What you’ll learn next

Begin with chapter one, or choose a topic.

  1. Read a connection-level advertisementA server can send an ORIGIN frame on an existing HTTP/2 connection. It advertises possible origins, not a new address to connect to.
  2. Ignore an ineligible frame before changing stateA received frame must pass connection, stream and flag rules before it changes the client’s Origin Set.
  3. Initialize, extend and shrink the Origin SetThe Origin Set is per connection. The first successfully processed ORIGIN initializes it; later entries add members and 421 responses can remove one.
  4. Keep membership and certificate checks separateAn advertised origin is only a candidate. The connection must still be authoritative, including suitable TLS certificate validation for that origin.
  5. Use the actual alternative-service portAn alternative service may answer an origin on a different network port. The first ORIGIN uses the actual connection port when it builds the initial origin.
  6. Prefer a covering connection and drain the otherA client can temporarily have two viable connections. A larger Origin Set may make another connection redundant.
Start with chapter one →

This introduction explains RFC 8336 (2018). Read the original RFC ↗