Visual RFC.
ALL RFCs / RFC 8441
Read the RFC ↗
RFC 8441 / WEBSOCKETS ON HTTP/2

Cross a proxy and keep security checks

05

A forward proxy still receives ordinary CONNECT. The protocol inside that tunnel determines the WebSocket opening handshake.

RFC 8441 · § 7EXAMPLE
3 / 3
Cross a proxy and keep security checksAn ordinary outer CONNECT without protocol asks the forward proxy for server.example.com:443. The proxy opens TCP and returns2xx. In the TLS example the inner HTTP version and its own opt-in determine the WebSocket opening. A separate unaccepted Origin example stops at a local policy gate. TLS, masking and authentication retain distinct roles; arbitrary non-browser Origin is not identity.Separate the outer tunnel and inner openingClientForward proxyOriginSeparate rejected-Origin exampleOrigin outside the site’s permitted setLocal policy rejects the openingTLS success does not authenticate a userMasking and Origin checks still have their jobs
03
Keep origin policy separate from a working tunnel.

Independent example: a site rejects an Origin outside its permitted set, so that WebSocket opening stops at the policy gate. TLS success does not override that decision or authenticate a user.

Source for this drawing: RFC 8441 · Read RFC section 7 ↗

Protocol participantThreat or exceptionProtocol controlSimplified drawings · precise section references
New to this? Start hereA quick picture + helpful background

A message needs an address.

Think of a packet as a small addressed envelope. Devices pass it onward; transport protocols decide what delivery promises an application gets.

Helpful first, if these ideas are unfamiliar

These pictures are analogies to help you learn. The linked RFC explains the actual rules.

Terms in this drawing
Forward proxy
An intermediary chosen by the client to relay a tunnel to an external host.
Origin
The browser page’s scheme, host and port; this request field is not a user login.
TLS
Transport encryption and peer protection for the illustrated wss connection.
Related RFCs and changes

“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.

KEY POINT

Do not confuse the outer proxy tunnel with the inner WebSocket stream.

  • For an HTTP/2 forward proxy, use traditional CONNECT without :protocol to tunnel toward the WebSocket server. The resulting HTTP version inside determines whether the extended opening is used.
  • In the illustrated wss tunnel, the client establishes TLS to the origin. If HTTP/2 is negotiated inside, that inner peer must provide its own opt-in before Extended CONNECT is used there.
  • RFC6455§10 security considerations still apply except the old-handshake-specific §10.8. Origin policy, masking, TLS and application authentication have distinct jobs; a successful tunnel does not log a user in.
DETAILS

Traditional CONNECT field rules are clarified by RFC9113§8.5: :method CONNECT, :authority host:port, no :scheme/:path. RFC8441§8 explains CONNECT/Sec-prefix/pseudo-header protections against cross-protocol browser requests; these are not client authentication. The final state is a separate rejected-Origin example following a site’s local policy. Origin is useful for browser-origin restrictions, not trustworthy identity from arbitrary non-browser clients.

Read the RFC section ↗

All chapters in RFC 8441

Drawing view

Scroll the drawing to see every part. Playback controls stay above it.

RFC 9700 / CHAPTERS

Chapters

For full details, tables, algorithms, and exceptions, read the original RFC.

RFC status and corrections ↗