Development #9702
MandayeJS : construire les cookies a partir de page.cookies et non page.headers + cookie filter
0%
Fichiers
Historique
Mis à jour par Josué Kouka il y a plus de 8 ans
Mis à jour par Josué Kouka il y a plus de 8 ans
- Fichier 0001-build-cookies-from-page.cookies-9702.patch 0001-build-cookies-from-page.cookies-9702.patch ajouté
- Patch proposed changé de Non à Oui
Mis à jour par Josué Kouka il y a plus de 8 ans
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
Bon le parsing des cookies c'est un peu touchy, j'espère que ta technique va marcher, je serai plus à l'aise en partant d'une base de code sûre (genre requests, webob ou werkzeug); la lib de base Cookie a le problème d'être trop stricte.
Il y a de la lumière au bout du tunnel: https://cookies.readthedocs.org/en/latest/
Mis à jour par Frédéric Péters il y a plus de 8 ans
De mon côté (sur base des expériences passées) je pense qu'il faut au maximum ne pas jouer avec les cookies, qu'il faut transférer les entêtes tels qu'envoyés par l'application, avec le moins de manipulation possible.
À quel besoin répond le changement ?
Mis à jour par Josué Kouka il y a plus de 8 ans
Frédéric Péters a écrit :
De mon côté (sur base des expériences passées) je pense qu'il faut au maximum ne pas jouer avec les cookies, qu'il faut transférer les entêtes tels qu'envoyés par l'application, avec le moins de manipulation possible.
À quel besoin répond le changement ?
Enfin, je fais une manipulation sans modification. Au départ, je dans phantomjs, je récuperais tous les cookies possible (de peur d'en manquer un qui soit important), puis les chargeait avec SimpleCookie, puis attachait le SimpleCookie à une response django.
J'en suis arrivé à le faire parce que quand les cookies récuperer de phantomjs étaient mal formatés (double quotes autour des valeurs, ...), un response.set_cookie(...)
settait un cookie avec ces doubles quotes. La solution que j'avais trouvé c'était de les charger sous forme de raw_cookie ( SET-COOKIE ...). C'est ce qui marche sur la recette Vincennes par exemple.
Apres 3 implémentations, je me rends compte que peut me fier aux cookies de phantomjs venant de page.cookies ( page sur laquelle on se trouve quand l'authentification phantomjs est OK). Par contre ces cookies sont sous forme de dictionaire et il n'y a pas de méthode SimpleCookie.from_dict().
Mis à jour par Josué Kouka il y a plus de 8 ans
- Fichier cookies.json cookies.json ajouté
Benjamin Dauvergne a écrit :
Bon le parsing des cookies c'est un peu touchy, j'espère que ta technique va marcher, je serai plus à l'aise en partant d'une base de code sûre (genre requests, webob ou werkzeug); la lib de base Cookie a le problème d'être trop stricte.
Il y a de la lumière au bout du tunnel: https://cookies.readthedocs.org/en/latest/
Le format de cookies reçu de phantomjs est attchée.
cookies a une méthode une méthode intérressante, mais il me faudrait comme passer par un SimpleCookie afin de pouvoir les attaché à une réponse django.
@
from cookies import Cookie
from Cookie import SimpleCookie
def cookie_parser(cookies):
ck = SimpleCookie()
for cookie in cookies:
ck.load(
Cookie.from_dict(cookie,ignore_bad_attributes=True).render_response()
)
return ck
@
render_response qui transforme en "raw_cookie".
Le petit souci, c'est qu'il n'y pas de package debian de python-cookies (sauf sur la SID)
Mis à jour par Frédéric Péters il y a plus de 8 ans
J'en suis arrivé à le faire parce que quand les cookies récuperer de phantomjs étaient mal formatés (double quotes autour des valeurs, ...), un response.set_cookie(...)
settait un cookie avec ces doubles quotes. La solution que j'avais trouvé c'était de les charger sous forme de raw_cookie ( SET-COOKIE ...). C'est ce qui marche sur la recette Vincennes par exemple.
Pour moi il y a des entêtes et il faut les ressortir au client tels qu'ils ont été donnés à phantomjs, sans interprétation ou modification aucune; surtout pas essayer de les remettre carrés, conformes aux specs, ou quoique ce soit. (on a déjà trop galéré par le passé à essayer de comprendre pourquoi une application ne reconnaissait pas ses cookies).
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
Je suis d'accord que si phantomjs permet d'avoir les entêtes cookie nus, il faut juste les recopier. Le parsing ne doit avoir lieu que si il y a une manipulation à faire sur les cookies, ça ne semble pas être le cas.