From 374529ec7c43a1a48da9bc85f8d8a2c7412abab8 Mon Sep 17 00:00:00 2001 From: Arjen Brouwer Date: Mon, 20 Jan 2020 21:05:50 +0100 Subject: [PATCH] correctly construct host header value --- requests_http_signature/__init__.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/requests_http_signature/__init__.py b/requests_http_signature/__init__.py index 613c569..dde3d7d 100644 --- a/requests_http_signature/__init__.py +++ b/requests_http_signature/__init__.py @@ -82,7 +82,16 @@ class HTTPSignatureAuth(requests.auth.AuthBase): sts.append("(request-target): {} {}".format(request.method.lower(), path_url)) else: if header.lower() == "host": - value = request.headers.get("host", urlparse(request.url).hostname) + url = urlparse(request.url) + value = request.headers.get("host", url.hostname) + if ( + url.scheme == "http" + and url.port not in [None, 80] + or url.scheme == "https" + and url.port not in [443, None] + ): + value = "{}:{}".format(value, url.port) + else: value = request.headers[header] sts.append("{k}: {v}".format(k=header.lower(), v=value))