h2 icon indicating copy to clipboard operation
h2 copied to clipboard

Add option to send ORIGIN frame

Open seanmonstar opened this issue 3 years ago • 3 comments

This proposes adding an option to the h2::server::Builder config such that it sends the ORIGIN frame to connections.

  • A method origin is added to the h2::server::Builder` struct.
    • We need to decide on the method argument. How should a user provide the origin-set?
    • The specification says the origin must ASCII, so we could just ask for a list of strings.
    • Or, we could force the user to provide a list of (Scheme, Authority) tuples, since we have those types in the http crate.
    • I'm not convinced which way is better myself.
  • A new file would be added, src/frame/origin.rs.
    • Implement encoding of the ORIGIN header according the RFC.
    • We don't need decoding for now.
  • Update the src/proto/connection.rs file such that Connection has an Option<Origin>, and if set, is written after the initial SETTINGS frame.

seanmonstar avatar Aug 08 '22 21:08 seanmonstar

cc @piscisaureus

seanmonstar avatar Aug 08 '22 21:08 seanmonstar

@lucacasonato This would work for us right? AFAICT there would be no need to send the ORIGIN frame after processing the first request.

piscisaureus avatar Aug 09 '22 21:08 piscisaureus

Yeah, this looks good. We can determine the value of the ORIGIN frame based on an SNI field in the TLS handshake.

I have no preference between strings and (Scheme, Authority).

lucacasonato avatar Aug 09 '22 22:08 lucacasonato