Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32.1k
Closed
Description
Bug report
Currently the following isFalse
fromurllib.requestimportRequest,urlopenlen(urlopen(Request("http://google.com",method="HEAD")).read())==0# False
But this isTrue
len(urlopen(Request("http://www.google.com",method="HEAD")).read())==0# True
This is becausehttp://google.com
redirects with 302 tohttp://www.google.com
.
This means that checking for existence of some file by URL will actually download the file when the URL responds with a redirect. This makes no sense. Also the HTTP spec says nothing about changing HEAD requests into GET requests; it just says that everything but GET and HEAD requests should require user interaction on redirect, which Python violates, but there's a comment on that explaining it's an active choice to violate the spec there.
To me it seems like this is an oversight. Note thatcurl -LI http://google.com
also sticks to HEAD requests.