mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-30 03:14:22 +00:00
Use host header values only when the ports match
This commit is contained in:
parent
6f96da08c9
commit
175109e44e
@ -183,7 +183,12 @@ class Request(Message):
|
|||||||
This is useful in transparent mode where :py:attr:`host` is only an IP address,
|
This is useful in transparent mode where :py:attr:`host` is only an IP address,
|
||||||
but may not reflect the actual destination as the Host header could be spoofed.
|
but may not reflect the actual destination as the Host header could be spoofed.
|
||||||
"""
|
"""
|
||||||
return self._parse_host_header()[0] or self.host
|
host, port = self._parse_host_header()
|
||||||
|
if not host:
|
||||||
|
return self.host
|
||||||
|
if not port:
|
||||||
|
port = 443 if self.scheme == 'https' else 80
|
||||||
|
return host if port == self.port else self.host
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def pretty_url(self):
|
def pretty_url(self):
|
||||||
|
@ -104,19 +104,23 @@ class TestRequestUtils(object):
|
|||||||
|
|
||||||
def test_pretty_host(self):
|
def test_pretty_host(self):
|
||||||
request = treq()
|
request = treq()
|
||||||
|
# Without host header
|
||||||
assert request.pretty_host == "address"
|
assert request.pretty_host == "address"
|
||||||
assert request.host == "address"
|
assert request.host == "address"
|
||||||
|
# Same port as self.port (22)
|
||||||
request.headers["host"] = "other:22"
|
request.headers["host"] = "other:22"
|
||||||
assert request.pretty_host == "other"
|
assert request.pretty_host == "other"
|
||||||
|
# Different Ports
|
||||||
request.headers["host"] = "other"
|
request.headers["host"] = "other"
|
||||||
assert request.pretty_host == "other"
|
assert request.pretty_host == "address"
|
||||||
assert request.host == "address"
|
assert request.host == "address"
|
||||||
|
# Empty host
|
||||||
request.host = None
|
request.host = None
|
||||||
assert request.pretty_host is None
|
assert request.pretty_host is None
|
||||||
assert request.host is None
|
assert request.host is None
|
||||||
|
|
||||||
# Invalid IDNA
|
# Invalid IDNA
|
||||||
request.headers["host"] = ".disqus.com"
|
request.headers["host"] = ".disqus.com:22"
|
||||||
assert request.pretty_host == ".disqus.com"
|
assert request.pretty_host == ".disqus.com"
|
||||||
|
|
||||||
def test_pretty_url(self):
|
def test_pretty_url(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user