J'essaie de générer le texte d'un cookie persistant dans une simple application Web Python. P>
J'ai du mal à trouver un moyen de générer le champ Y a-t-il quelque chose dans Python qui aidera? J'ai cuisiné sur les docs pour expire code>. Le format de texte du champ est quelque peu compliqué et je préférerais ne pas écrire de code pour le générer moi-même. P>
cookie code> et
Cookielib COCT> et ils semblent gérer une grande partie de l'entreprise de cookie, à l'exception de la génération du champ code> code> p>
4 Réponses :
Je pense que vous voulez faire quelque chose comme ceci:
import Cookie, datetime, uuid ck = Cookie.SimpleCookie() ck['session'] = str(uuid.uuid4()) ck['session']['domain'] = 'foo.com' ck['session']['path'] = '/' expires = datetime.datetime.utcnow() + datetime.timedelta(days=30) # expires in 30 days ck['session']['expires'] = expires.strftime("%a, %d %b %Y %H:%M:%S GMT") >>> print ck.output() Set-Cookie: session=9249169b-4c65-4daf-8e64-e46333aa5577; Domain=foo.com; expires=Mon, 01 Aug 2011 07:51:53 GMT; Path=/
Ne pas régler expire à 0 Créer un cookie de session? Je cherche à créer un cookie persistant avec une valeur d'expiration non nulle.
Exemple mis à jour avec des cookies pour expirer dans 30 jours
Si j'ai raison, lorsque vous utilisez La sortie de cookie.simplecookie code> Vous pouvez simplement spécifier le TTL en secondes pour le champ expire strong> quelque chose comme:
c.output () code> retourne quelque chose comme: p>
Je développe un commentaire précédent et une demi-réponse à une réponse utilisable.
Celui-ci produit à ma connaissance un format de date de cookie le plus correct et pratique dans une seule fonction rapide - acceptée par n'importe quel vieux et SIMART, Navigateurs - Accepte l'heure absolue et relative: p> la fonction évolué à partir de
cookie._getdate () code> /
http. cookies._getDate () code>, qui produit des espaces au lieu du procédé
- code> 's (OK selon RFC, mais pas reconnu par tous les navigateurs). Cette fonction permet uniquement de synchronisation relative et est une fonction non documentée. Cependant, il peut être utilisé par la fonctionnalité non documentée également que vous pouvez donner des secondes entière (mais pas flotter!) Pour le champ Expires dans
SimpleCookie Code> Morsels, qui sont ensuite interprétés par rapport à des secondes dans le futur / passé : P>
cookie_morsel['expires'] = +3600 # 1h into future; 3600.0 doesn't work!
Vous pouvez simplement définir les champs «expirez» comme nombre d'entier de secondes dans le futur / passé. Float ne fonctionne pas. Voir
http.cokies._getDate () code> /
cookie._getdate () code>. Il semble tout simplement pas documenté.