web-dev-qa-db-fra.com

Python demandes: POST demande en supprimant l'en-tête d'autorisation

J'essaye de créer une API POST request en utilisant la bibliothèque Python requests). Je passe par un en-tête Authorization mais quand j'essaye débogage, je peux voir que l'en-tête est en cours de suppression. Je n'ai aucune idée de ce qui se passe.

Voici mon code:

access_token = get_access_token()
bearer_token = base64.b64encode(bytes("'Bearer {}'".format(access_token)), 'utf-8')
headers = {'Content-Type': 'application/json', 'Authorization': bearer_token}
data = '{"FirstName" : "Jane", "LastName" : "Smith"}'
response = requests.post('https://myserver.com/endpoint', headers=headers, data=data)

Comme vous pouvez le voir ci-dessus, j'ai défini manuellement l'en-tête Authorization dans les arguments de la requête, mais il manque les en-têtes de la requête réelle: {'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'User-Agent': 'python-requests/2.4.3 CPython/2.7.9 Linux/4.1.19-v7+'}.

Une information supplémentaire est que si je change la requête POST en requête GET, l'en-tête Authorization passe normalement!

Pourquoi cette bibliothèque abandonnerait-elle l'en-tête des requêtes POST et comment faire fonctionner cela?

Utilisation de la version 2.4.3 des requêtes lib et Python 2.7.9

9
user4184113

Pour envoyer l'en-tête Authorization dans POST request utilisant 'request' lib. In Python utilisez simplement ceci:

requests.post('https://api.github.com/user', auth=('user', 'pass'))

C'est une authentification de base.

0
mayank gupta