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)
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"))
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")]
)
request.prepare()
assert request.headers == httpcore.Headers(
[
- (b"host", b"example.org"),
(b"content-length", b"8"),
(b"accept-encoding", b"deflate, gzip, br"),
]
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"),
request.prepare()
assert request.headers == httpcore.Headers(
[
- (b"host", b"example.org"),
(b"transfer-encoding", b"chunked"),
(b"accept-encoding", b"deflate, gzip, br"),
]
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")]
)
request.prepare()
assert request.headers == httpcore.Headers(
[
- (b"host", b"example.org"),
(b"accept-encoding", b"deflate, gzip, br"),
(b"content-length", b"8"),
]