hyper icon indicating copy to clipboard operation
hyper copied to clipboard

How to https?

Open peterbe opened this issue 5 years ago • 5 comments

Consider

from hyper import HTTPConnection
c = HTTPConnection('www.peterbe.com')
c.request('GET', '/')
resp = c.get_response()
print(resp.status)
print(resp.headers['location'])

Output becomes:

301
[b'https://www.peterbe.com/']

That's like doing curl -v http://www.peterbe.com which will also respond with:

< HTTP/1.1 301 Moved Permanently
< Server: cloudflare-nginx
< Date: Wed, 24 Apr 2019 13:32:25 GMT
< Content-Type: text/html
< Content-Length: 162
< Connection: keep-alive
< Location: https://www.peterbe.com/

I think the problem is that http://www.peterbecom is HTTP/1.1 whereas https://www.peterbe.com is HTTP/2. ...if that matters.

peterbe avatar Apr 24 '19 13:04 peterbe

PS the immediate "solution" is to do it like this instead:

-c = HTTPConnection('www.peterbe.com',)
+c = HTTPConnection('www.peterbe.com', port=443)

then it works as expected. Clunky though. That's why I think this issue should stay open till it's less clunky.

The documentation says:

By default, all HTTP/2 connections are made over TLS.

peterbe avatar Apr 24 '19 13:04 peterbe

@Asmeble How does that help when trying to use hyper?

Also, how is that different from regular requests?

peterbe avatar May 02 '19 21:05 peterbe