2010-12-16 171 views
0

J'ai un script CGI pour lequel j'ai réussi à configurer un cookie (que je peux voir dans Firefox/Chrome!) Qui a (disons) le nom uid et le contenu 1. Je ne semble pas comprendre comment accéder à ce cookie à partir d'un autre script CGI - et je travaille en Python 2.4, donc beaucoup d'exemples que j'ai trouvés peuvent ne pas s'appliquer.Impossible d'accéder au cookie en Python (2.4)

Ce code imprime « ne peut pas obtenir uid », suivi par le reste de la page:

c = Cookie.SimpleCookie(os.environ.get("HTTP_COOKIE")) 
print("Content-Type: text/html") 
print c.output() 
print("\n\n") 
uid = c.get("uid") 
#uid = c["uid"].value # this would create an error and page would fail totally 
if uid is None: 
    print("can't get uid") 
    uid = 1 # set manually to prevent the rest of the page from failing 

Je ne l'ai pas fait quoi que ce soit avec le domaine fishy le cookie applique, donc je ne comprends pas pourquoi cela n'attrape pas la valeur de l'uid. En passant, si j'essaie d'imprimer c.output(), c'est vide.

+0

Bonjour à nouveau. Que voyez-vous dans la vue des cookies de Firefox? – Robert

+0

J'ai 3 cookies dans Firefox pour le domaine en question. L'un s'appelle __utma et le contenu est une chaîne de nombres. L'un est nommé lastvisit et la valeur est un horodatage Unix. Le dernier est nommé uid et le contenu est un seul chiffre - l'UID défini correctement à partir du script login.cgi. – umbraphile

+0

Je me rends compte qu'il y a quelque chose d'irréaliste dans la façon dont je teste cela. Dans le navigateur, je viens d'obtenir une page "Erreur de serveur" non spécifique. Si je la teste sur la ligne de commande, je reçois le message "impossible d'obtenir l'uid" ... mais sur la ligne de commande, il n'y a pas de navigateur donc je ne devrais pas m'attendre à pouvoir récupérer le cookie! Donc, ce problème est plus difficile que je pensais - l'erreur pourrait être n'importe où dans le fichier. Je vais essayer de faire un très simple maintenant qui ne fait rien d'autre que d'essayer d'accéder au cookie. – umbraphile

Répondre

0

Bon, je pense que j'ai compris ça! J'ai confirmé que os.environ.get ("HTTP_COOKIE") recevait quelque chose, et ensuite joué avec l'ordre des éléments dans mon test minuscule jusqu'à ce que cela fonctionne. Puis j'ai reproduit cet ordre dans mon script plus compliqué. (Plus précisément: déclaration de type de contenu, deux retours à la ligne, obtenir cookie, obtenir la valeur de cookie, tout le reste.)

La principale chose que j'ai apprise à propos de Python et CGI est que l'ordre des éléments (en commençant par la déclaration de type de contenu) est très difficile. Merci beaucoup pour les conseils dans la bonne direction.

0

Premièrement, êtes-vous sûr que le serveur Web ou le framework définit la variable d'environnement HTTP_COOKIE? Sinon, dans l'un de vos scripts, vous voudrez peut-être stocker les cookies dans le fichier CookieJar dans le système de fichiers et accéder à l'ensemble des cookies à partir de là. Chargez le même cookiejar et lancez l'utilitaire uid dans l'autre script.