perché questo cookie non ritorna al percorso specificato quando il dominio inizia con www?

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:

http://example.com/cgi-bin/something.py?q=some_query_key

ma quando è chiamato come:

http://www.example.com/cgi-bin/something.py?q=some_query_key

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?

3 Comments:

  1. è necessario impostare il cookie come .example.com invece di example.com per essere accessibile da sottodomini.

    1. mi dispiace, non ho visto la tua A in tempo, + 1 comunque. l'ho provato da solo per disperazione e ha funzionato. BTW, il mio www. sito non è registrato come un sottodominio, è per questo che ho totalmente confuso su tutta la storia. la mia risposta è un po 'più ampia, quindi lo segnerò come accettato al posto vostro se qualcosa non cambia. grazie comunque!
  2. mi dispiace per disturbare tutti.

    aggiungere un punto "." di fronte a un dominio:

    cookie["session"]["domain"] = ".example.com"
    

    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.

More similar articles:

  • utilizzando RegEx per abbinare ogni segmento di una linea che inizia con un termine specificato e si ferma quando questo termine si verifica di nuovo.
  • PHP: fopen path per 'include script usando Apache Document Root quando viene specificato il percorso completo?
  • perché il mio script Perl non inizia con FastCGI?
  • Python - ricerca regex di stringa che inizia e termina con il testo specificato
  • modo più breve per verificare se una stringa inizia con un set di sottostringhe specificato
  • i comandi falliscono quando si inizia la bash da perl ma non quando si parte da linea di comando, i problemi di autorizzazione
  • Python regex trova le parole con il carattere specificato in mezzo alla parola che non inizia o termina con il carattere.
  • JSON Dump in Python CGI inizia con punti finali
  • cgi.FieldStorage con multipart/form-data cerca di decodificare file binario come UTF-8 se "filename =" non specificato
  • quando inizia a contare il tempo di lavoro di Celery?
  • IIS 7 + http custom handler error: impossibile caricare file o assembly Il sistema non può trovare il file specificato
  • sempre ottenere prima img invece di img dopo id specificato div?
  • trova il limite di memoria a livello di programmazione nello script python cgi?
  • espressione regolare per abbinare qualsiasi linea vuota o qualsiasi linea che inizia con un carattere specificato
  • lo script Perl CGI servito da IIS non inizia con l'errore HTTP-502 ma funziona se provato di nuovo
  • recuperare tutti gli elementi con una colonna che inizia con il testo specificato su DynamoDB
  • popolare dinamicamente menu a discesa con selezione dal menu a discesa precedente
  • voglio controllare se il numero inizia con 4 o 5 in CGI
  • NoClassDefoundError quando si inizia a apache Solr
  • espressione regolare per frasi corrispondenza non inizia con prefisso specificato
  • Delphi CGI (IIS 7.5, Win 7): il sistema non riesce a trovare il file specificato
  • UIAlertView inizia a mostrare, schermo dims, ma non pop-up fino a quando è troppo tardi!
  • Visual Studio Code: launch.json inizia il file JavaScript invece di file di dattiloscritto, anche se il file ts è stato specificato come parametro del programma
  • la colonna di identità inizia dal seme specificato
  • errore di ember dicendo che ho specificato un hasmany quando non ho
  • Flowplayer: inizia a riprodurre video dal tempo specificato
  • NSUserDefaults inizializzazione dei tasti quando l'app inizia per la prima volta
  • sostituire i caratteri nella stringa se inizia o termina con il carattere specificato
  • funzione ritardata che inizia 4x più velocemente di quanto specificato
  • la variabile d'ambiente funziona solo nel prompt dei comandi di windows quando la eseguo "inizia in% HOMEDRIVE% HOMEPATH%"