From 9af1d939d0a2dbd1b42dcf177eb6be2f13e09eba Mon Sep 17 00:00:00 2001 From: Anis Elleuch Date: Mon, 29 May 2017 12:24:47 +0100 Subject: [PATCH] signv4: Strip port 80 & 443 from url curl & browsers strip port 80 and 443 from host header when a user tries to open a presigned urls, the thing that leads to a signature mismatch error. This PR strips port 80/443 by default. --- minio/helpers.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/minio/helpers.py b/minio/helpers.py index 5b18db5de..4580e2857 100644 --- a/minio/helpers.py +++ b/minio/helpers.py @@ -190,10 +190,16 @@ def get_target_url(endpoint_url, bucket_name=None, object_name=None, parsed_url = urlsplit(endpoint_url) # Get new host, scheme. + scheme = parsed_url.scheme host = parsed_url.netloc + + # Strip 80/443 ports since curl & browsers do not + # send them in Host header. + if parsed_url.port == 80 or parsed_url.port == 443: + host = parsed_url.hostname + if 's3.amazonaws.com' in host: host = get_s3_endpoint(bucket_region) - scheme = parsed_url.scheme url = scheme + '://' + host if bucket_name: