cookie funziona solo su un dominio senza www. prefisso. perché? perché?
voglio che il mio cookie venga inviato al server quando l'utente è sul percorso identificato con una stringa di query. il percorso è sempre lo stesso script CGI.
il problema è che il seguente codice funziona perfettamente quando la pagina in questione è chiamata come:
ma quando è chiamato come:
poi il set cookie non funziona. cioè vale a dire anche se qualche cookie è impostato, non torna al server quando la pagina viene caricata di nuovo.
import cgi import cgitb cgitb.enable() import Cookie, import datetime import os def setcookie (q, rated, asked, posted): expiration = datetime.datetime.now() + datetime.timedelta(days=3650) cookie = Cookie.SimpleCookie() cookie["session"] = "%i:%i:%i" % (rated, asked, posted) cookie["session"]["domain"] = "example.com" cookie["session"]["path"] = "/cgi-bin/something.py?q="+q cookie["session"]["expires"] = expiration.strftime("%a, %d-%b-%Y %H:%M:%S P$ print cookie.output() rated, asked, posted = (0, 0, 0) if not os.environ.has_key("HTTP_COOKIE"): setcookie("some_query_key", 1, asked, posted) else: cookie = Cookie.SimpleCookie(os.environ["HTTP_COOKIE"]) rated, asked, posted = map(int, cookie["session"].value.split(":")) print "Content-Type: text/html\n" print "<h1>Some HTML, blah blah...</h1><br>" print "Tuple (rated, asked, posted):", (rated, asked, posted)
questo è un codice esemplare, quindi la gestione degli errori non è inclusa, e domini fittizi e percorsi sono utilizzati.
qualcuno sa cosa sta accadendo qui. sono su Mozilla Firefox.
En title : Why doesn't this cookie return to the specified path when domain starts with www?
è necessario impostare il cookie come
.example.com
invece diexample.com
per essere accessibile da sottodomini.mi dispiace per disturbare tutti.
aggiungere un punto "." di fronte a un dominio:
fa il trucco. sapevo del prefisso dot, ma non sapevo che www sia trattato come un sottodominio anche se è definito nel DNS globale.
inoltre, questo non ha troppo senso, come il punto non è menzionato in un URL http://example.com/etc...
inoltre, Il mio Firefox è stato confuso con molti test, quindi non sarebbe tornare anche con il prefisso dot, perché il cookie con un dominio preceduto da dot, e uno senza sono considerati due cookie diversi, anche se dovrebbero innescare su stessi siti. valore di un cookie, cioè il suo nome = valore non è ovviamente valutato.
nota 1: .example.com invierà il cookie per ogni sottodominio di example.com, non solo www, in modo da specificare il percorso per controllarlo bene.
nota 2: se non si imposta l'attributo di dominio di un cookie, il browser non lo imposta per i sottodomini, solo per un dominio, quindi, se si desidera che funzioni per i sottodomini, è necessario impostarlo.
ho deciso di non cancellare questa Q ma dare un A in modo che gli altri possano ottenere qualche spiegazione in più quando inciampano su questo problema.