Relay Reference
In our reading, the core responsibilities of a relay are to:
- forward HTTP requests and responses
- without including headers or other identifying information
- without having any visibility into request contents
Spelled out in full in the RFC 9458, the section on relay responsibilities states that relays:
- MUST follow the forwarding rules in Section 7.6 of the HTTP standard RFC9110
- SHOULD NOT forward unknown fields
- MUST NOT include client-identifying information
- MAY apply differential treatment to Clients that engage in abusive behavior
- SHOULD only add delays with the consent of Clients
Specified behavior
Following the request format and response format message formats described in RFC 9458 and draft-ietf-ohai-chunked-ohttp-04, our relays will forward only certain requests and responses.
Content type
Requests must include a Content-Type header with the value message/ohttp-req or message/ohttp-chunked-req. Responses must include a Content-Type header with the value message/ohttp-res or message/ohttp-chunked-res.
Other headers
Content-Lengthwill be forwarded if it is provided by the client.Incrementalwill be set to the value?1for chunked requests and responses.- All other headers will be dropped.
Request and response bodies
Request and response bodies will be forwarded unchanged; the relay assumes that bodies are binary blobs containing encrypted binary HTTP requests. That said, relays will happily forward plaintext bodies if necessary for troubleshooting or debugging, as long as the Content-Type header is set correctly.