De nombreuses applications Web envoient des cookies dans plusieurs en-têtes Set-Cookie, un en-tête pour un cookie. Les requêtes joignent ces en-têtes dans un grand en-tête séparé par une virgule.
De la même application Web à request.get
Set-Cookie: ASP.NET_SessionId=token1; path=/; HttpOnly
Set-Cookie: Cookie1=token2; path=/ecp
Set-Cookie: X-BEResource=WIN-RBFR0BDA7V7.testlab.net~1; path=/ecp/15.0.516.30; HttpOnly
Set-Cookie: X-BackEndCookie=token3; expires=Mon, 03-Apr-2017 12:25:07 GMT; path=/ecp; HttpOnly
Dans les demandes :
resp.headers cela ressemble à
Set-Cookie: ASP.NET_SessionId=token1; path=/; HttpOnly,
Cookie1=token2; path=/ecp,
X-BEResource=WIN-RBFR0BDA7V7.testlab.net~1; path=/ecp/15.0.516.30; HttpOnly,
X-BackEndCookie=token3; expires=Thu, 06-Apr-2017 08:27:22 GMT; path=/ecp; HttpOnly
Firefox, IE, Chrome invalide ont interprété ces cookies car le séparateur est une virgule mais dans le champ EXPIRE le jour et la date séparés par une virgule.
Problème principal dans le trafic de modification. À mon avis, le serveur envoie plusieurs en-têtes lib doit renvoyer plusieurs en-têtes
Requests ne promet pas de laisser les en-têtes sous la forme où ils sont reçus du serveur. À l'heure actuelle, je vous recommande fortement d'utiliser le cookiejar Requests utilise pour stocker les cookies plutôt que de les extraire des en-têtes : nous les y insérons correctement.
À plus long terme, nous devrions probablement ajouter un correctif pour empêcher l'en-tête Set-Cookie
de se joindre de cette manière.
Cela nous a mordus et nous a coûté pas mal d'heures. J'aimerais voter pour laisser Set-Cookie
intact. Pourquoi les requêtes manipulent-elles les en-têtes de toute façon ? Y a-t-il une bonne raison à cela ? À mon humble avis, cela ne fait que compliquer les choses pour tout le monde. Qu'est-ce que je rate?
Merci pour votre bon travail!
Salut, il existe un moyen d'analyser correctement les en-têtes avec https://github.com/Ousret/kiss-headers requests
ne pourra pas changer leur représentation pour les en-têtes de sitôt.
Commentaire le plus utile
Requests ne promet pas de laisser les en-têtes sous la forme où ils sont reçus du serveur. À l'heure actuelle, je vous recommande fortement d'utiliser le cookiejar Requests utilise pour stocker les cookies plutôt que de les extraire des en-têtes : nous les y insérons correctement.
À plus long terme, nous devrions probablement ajouter un correctif pour empêcher l'en-tête
Set-Cookie
de se joindre de cette manière.