New submission from Matej Cepl:

GitHub API v3 is intentionally broken (see 
http://developer.github.com/v3/auth/):

> The main difference is that the RFC requires unauthenticated requests to be 
> answered with 401 Unauthorized responses. In many places, this would disclose 
> the existence of user data. Instead, the GitHub API responds with 404 Not 
> Found. This may cause problems for HTTP libraries that assume a 401 
> Unauthorized response. The solution is to manually craft the Authorization 
> header.

Unfortunately, urllib2.HTTPBasicAuthHandler relies on the standard-conformant 
behavior. So a naive programmer (like me) who wants to program against GitHub 
API using urllib2 (and foolishly ignores this comment about the API 
non-conformance, because he thinks GitHub wouldn't be that stupid and break all 
Python applications) uses for authentication something like the example script 
on http://docs.python.org/2/howto/urllib2.html#id6, spends couple of hours 
hitting this issue, until he tries python-requests (which work) and his 
(mistaken) conclusion is that urllib2 is a piece of crap which should never be 
used again.

I am not sure how widespread is this breaking of RFC, but it seems to me that 
quite a lot (e.g., http://stackoverflow.com/a/9698319/164233 which just en 
passant expects urllib2 authentication stuff to be useless), and the question 
is whether it shouldn't be documented somehow and/or 
urllib2.HTTPBasicAuthHandler shouldn't be modified to try add Authenticate 
header first.

----------
components: Library (Lib)
messages: 202144
nosy: mcepl
priority: normal
severity: normal
status: open
title: urllib2.HTTPBasicAuthHandler (or urllib.request.HTTPBasicAuthHandler) 
doesn't work with GitHub API v3 and similar
versions: Python 2.6, Python 2.7, Python 3.3, Python 3.4

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue19494>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to