Relay Reference

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-Length will be forwarded if it is provided by the client.
  • Incremental will be set to the value ?1 for 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.