requests Authorization header

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Boa
User
Beiträge: 190
Registriert: Sonntag 25. Januar 2009, 12:34

Hallo,

Wenn ich requests einen Authorization Header mitgebe:

Code: Alles auswählen

requests.put(URL, data=fileobject, headers={"Host": HOST, "Authorization":TOKEN})
Dann wandelt es diesen um, anstatt ihn direkt zu übernehmen:

Code: Alles auswählen

response.request.headers
CaseInsensitiveDict({'Content-Length': u'10', 'Accept-Encoding': 'gzip, deflate, compress', 'Accept': '*/*', 'User-Agent': 'python-requests/1.2.3 CPython/2.7.3 Linux/3.2.0-58-generic', 'Host': 'api.sugarsync.com', 'Authorization': u'Basic ZGVyc2lubmRlc24lYmVuekBnbXgubmOmNoYW9zbWFzY2hpbmVjb2d52ZXJ0ZXIwMDc='})
TOKEN ist eigentlich eine URL.
Dadurch wird die Anfrage vom Server (seit kurzem) abgelehnt. Wie kann ich den Header direkt übernehmen?

Gruß,
Boa
Boa
User
Beiträge: 190
Registriert: Sonntag 25. Januar 2009, 12:34

Hallo,

Ich habe den Grund für den falschen Header gefunden. Und zwar hatte ich in meiner .netrc (unter Linux; vermutlich heißt die Datei unter Win anders) einen default Nutzernamen/Passwort hinterlegt, auf die requests dann zurückgegriffen hat :(
Dem kann man entgehen indem man das Null Object design pattern verwendet bzw. einen Handler schreibt, der einfach nichts macht:

Code: Alles auswählen

class NoAuth(AuthBase):
    """Do nothing authentication handler."""
    def __call__(self, request):
        return request
#...
requests.get(URL, auth=NoAuth())
Boa
Antworten