]> git.ipfire.org Git - thirdparty/httpx.git/commitdiff
Drop Host header for HTTP/2 (#82)
authorTom Christie <tom@tomchristie.com>
Tue, 28 May 2019 13:39:57 +0000 (14:39 +0100)
committerGitHub <noreply@github.com>
Tue, 28 May 2019 13:39:57 +0000 (14:39 +0100)
httpcore/dispatch/http11.py
httpcore/models.py
tests/models/test_requests.py

index 4308f64a3a4432e7218541aa8316f7d51bd79ac8..6f1548563b68ca80a4bfd9fd0ec4406d2cdd5c53 100644 (file)
@@ -46,6 +46,9 @@ class HTTP11Connection:
         method = request.method.encode("ascii")
         target = request.url.full_path.encode("ascii")
         headers = request.headers.raw
+        if 'Host' not in request.headers:
+            host = request.url.authority.encode("ascii")
+            headers = [(b"host", host)] + headers
         event = h11.Request(method=method, target=target, headers=headers)
         await self._send_event(event, timeout)
 
index f8c108471680cc09efc01d2d0634ada36dd69d41..cb28675d2db4e51c865e320d35f61e709515c095 100644 (file)
@@ -523,14 +523,11 @@ class Request:
     def prepare(self) -> None:
         auto_headers = []  # type: typing.List[typing.Tuple[bytes, bytes]]
 
-        has_host = "host" in self.headers
         has_content_length = (
             "content-length" in self.headers or "transfer-encoding" in self.headers
         )
         has_accept_encoding = "accept-encoding" in self.headers
 
-        if not has_host and self.url.authority:
-            auto_headers.append((b"host", self.url.authority.encode("ascii")))
         if not has_content_length:
             if self.is_streaming:
                 auto_headers.append((b"transfer-encoding", b"chunked"))
index c7faf816a9a51a20d3373509e7ca21bf9ee69b03..d0d521a4680ff03149158681b33a0073e3a9189f 100644 (file)
@@ -8,11 +8,11 @@ def test_request_repr():
     assert repr(request) == "<Request('GET', 'http://example.org')>"
 
 
-def test_host_header():
+def test_no_content():
     request = httpcore.Request("GET", "http://example.org")
     request.prepare()
     assert request.headers == httpcore.Headers(
-        [(b"host", b"example.org"), (b"accept-encoding", b"deflate, gzip, br")]
+        [(b"accept-encoding", b"deflate, gzip, br")]
     )
 
 
@@ -21,7 +21,6 @@ def test_content_length_header():
     request.prepare()
     assert request.headers == httpcore.Headers(
         [
-            (b"host", b"example.org"),
             (b"content-length", b"8"),
             (b"accept-encoding", b"deflate, gzip, br"),
         ]
@@ -33,7 +32,6 @@ def test_url_encoded_data():
     request.prepare()
     assert request.headers == httpcore.Headers(
         [
-            (b"host", b"example.org"),
             (b"content-length", b"8"),
             (b"accept-encoding", b"deflate, gzip, br"),
             (b"content-type", b"application/x-www-form-urlencoded"),
@@ -52,7 +50,6 @@ def test_transfer_encoding_header():
     request.prepare()
     assert request.headers == httpcore.Headers(
         [
-            (b"host", b"example.org"),
             (b"transfer-encoding", b"chunked"),
             (b"accept-encoding", b"deflate, gzip, br"),
         ]
@@ -75,7 +72,7 @@ def test_override_accept_encoding_header():
     request = httpcore.Request("GET", "http://example.org", headers=headers)
     request.prepare()
     assert request.headers == httpcore.Headers(
-        [(b"host", b"example.org"), (b"accept-encoding", b"identity")]
+        [(b"accept-encoding", b"identity")]
     )
 
 
@@ -90,7 +87,6 @@ def test_override_content_length_header():
     request.prepare()
     assert request.headers == httpcore.Headers(
         [
-            (b"host", b"example.org"),
             (b"accept-encoding", b"deflate, gzip, br"),
             (b"content-length", b"8"),
         ]