Projet

Général

Profil

Development #9702

MandayeJS : construire les cookies a partir de page.cookies et non page.headers + cookie filter

Ajouté par Josué Kouka il y a plus de 8 ans. Mis à jour il y a plus de 8 ans.

Statut:
Rejeté
Priorité:
Normal
Assigné à:
Josué Kouka
Catégorie:
-
Version cible:
-
Début:
20 janvier 2016
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Fichiers

Historique

#2

Mis à jour par Josué Kouka il y a plus de 8 ans

#4

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/

#5

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 ?

#6

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().

#7

Mis à jour par Josué Kouka il y a plus de 8 ans

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)

#8

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).

#9

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.

#10

Mis à jour par Josué Kouka il y a plus de 8 ans

  • Statut changé de En cours à Rejeté

ok ça marche ;)

Formats disponibles : Atom PDF