mirror of https://github.com/python/cpython
gh-99730: urllib.request: Keep HEAD method on redirect (GH-99731)
This commit is contained in:
parent
49baa656cb
commit
759e8e7ab8
|
@ -1402,6 +1402,15 @@ class HandlerTests(unittest.TestCase):
|
|||
request = handler.last_buf
|
||||
self.assertTrue(request.startswith(expected), repr(request))
|
||||
|
||||
def test_redirect_head_request(self):
|
||||
from_url = "http://example.com/a.html"
|
||||
to_url = "http://example.com/b.html"
|
||||
h = urllib.request.HTTPRedirectHandler()
|
||||
req = Request(from_url, method="HEAD")
|
||||
fp = MockFile()
|
||||
new_req = h.redirect_request(req, fp, 302, "Found", {}, to_url)
|
||||
self.assertEqual(new_req.get_method(), "HEAD")
|
||||
|
||||
def test_proxy(self):
|
||||
u = "proxy.example.com:3128"
|
||||
for d in dict(http=u), dict(HTTP=u):
|
||||
|
|
|
@ -650,6 +650,7 @@ class HTTPRedirectHandler(BaseHandler):
|
|||
newheaders = {k: v for k, v in req.headers.items()
|
||||
if k.lower() not in CONTENT_HEADERS}
|
||||
return Request(newurl,
|
||||
method="HEAD" if m == "HEAD" else "GET",
|
||||
headers=newheaders,
|
||||
origin_req_host=req.origin_req_host,
|
||||
unverifiable=True)
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
HEAD requests are no longer upgraded to GET request during redirects in urllib.
|
Loading…
Reference in New Issue