python-hyper / hyper

HTTP/2 for Python.
http://hyper.rtfd.org/en/latest/
MIT License
1.05k stars 191 forks source link

Handle headers specified in the `Connection` header. #83

Closed Lukasa closed 9 years ago

Lukasa commented 9 years ago

From the spec:

HTTP/2 does not use the "Connection" header field to indicate connection-specific header fields; in this protocol, connection- specific metadata is conveyed by other means. An endpoint MUST NOT generate an HTTP/2 message containing connection-specific header fields; any message containing connection-specific header fields MUST be treated as malformed (Section 8.1.2.6).

The only exception to this is the TE header field, which MAY be present in an HTTP/2 request; when it is, it MUST NOT contain any value other than "trailers".

This means that an intermediary transforming an HTTP/1.x message to HTTP/2 will need to remove any header fields nominated by the Connection header field, along with the Connection header field itself. Such intermediaries SHOULD also remove other connection- specific header fields, such as Keep-Alive, Proxy-Connection, Transfer-Encoding and Upgrade, even if they are not nominated by Connection.

This means there are two steps:

Lukasa commented 9 years ago

Ok, step one was released in v0.1.2.

jkbrzt commented 9 years ago

@Lukasa I wonder if you could remove Connection from the Requests' request headers as well. Otherwise it appears in HTTPie's output when the request headers are printed out.

Lukasa commented 9 years ago

Ok, the full set of work here is done, excepting the work tracked under jakubroztocil/httpie-http2#3.