Hypercorn is based on the excellent hyper-h2 library.
The recommendations in this documentation for the SSL/TLS ciphers and
version are from RFC 7540. As
required in the RFC
ECDHE+AESGCM is the minimal cipher set HTTP/2
and TLSv2 the minimal TLS version servers should support. By default
Hypercorn will use this as the cipher set.
The ALPN Protocols should be set to include
Hypercorn supports both. It is feasible to omit one to only serve the
other. If these aren’t set most clients will assume Hypercorn is a
HTTP/1.1 only server. By default Hypercorn will set h2 and http/1.1 as
the ALPN protocols.
Most clients, including all the web browsers only support HTTP/2 over
TLS. Hypercorn, however, supports the h2c HTTP/1.1 to HTTP/2 upgrade
process. This allows a client to send a HTTP/1.1 request with a
Upgrade: h2c header that results in the connection being upgraded
to HTTP/2. To test this try
$ curl --http2 http://url:port/path
Note that in the absence of either the upgrade header or an ALPN protocol Hypercorn will assume and treat the connection as HTTP/1.1.
Hypercorn supports pipeling, flow control, server push, and prioritisation.