PHP setcookie () per dominio ma NON sottodomini
Domanda
Esiste un modo per impostare un cookie non leggibile sui sottodomini? In altre parole, avere i cookie disponibili su domain.com
, ma non www.domain.com
o xyz.domain.com
.
//this is what i'm "intending"...
setcookie($name,$value,$expires,'/','domain.com');
//however, this is how it behaves:
setcookie($name,$value,$expires,'/','.domain.com');
Il ragionamento: sto impostando un CDN statico su un sottodominio e non voglio che i cookie della sessione utente vadano avanti e indietro per ogni immagine, file css, file js, ecc.
... devo ricorrere all'utilizzo di www.domain.com
per il mio sito? Ci sono soluzioni alternative?
Soluzione
Apparentemente, avere un cookie su " domain.com " che corrisponderà a " *. domain.com " è il comportamento previsto.
Ad esempio: COOKIE HTTP DELLO STATO DEI CLIENTI PERSISTENTI state (alcuni enfatizzano il mio ) :
dominio = nome di dominio
Durante la ricerca dell'elenco dei cookie per cookie validi, un confronto tra attributi di dominio del cookie è realizzato con il nome di dominio Internet di l'host da cui sarà l'URL inverosimile. ...
" Tail matching " si intende quell'attributo di dominio è abbinato contro la coda del pieno nome di dominio qualificato dell'host. A attributo di dominio di " acme.com " voluto abbina i nomi host " anvil.acme.com " come oltre a " shipping.crate.acme.com " .Solo host all'interno del dominio specificato può impostare un cookie per un dominio e i domini devono avere almeno due (2) o tre (3) periodi in essi impedire i domini del modulo: " .com " ;, ".edu", e "va.us". Qualsiasi dominio che fallisce in uno dei sette speciali domini di primo livello elencati di seguito richiedono due periodi. Qualsiasi altro dominio richiede almeno tre. I sette domini di primo livello speciali sono: " COM " ;, " EDU " ;, " NET " ;, " ORG " ;, " GOV " ;, " MIL " ;, e & Quot; INT ".
Quindi, dovrete:
- usa "
www.domain.com
" per il tuo sito - o usa un nome di dominio totalmente diverso per i tuoi contenuti statici (come "
.anotherdomain.com
")- per esempio, questo è ciò che viene fatto su StackOverflow: il contenuto statico viene fornito da sstatic.net
Altri suggerimenti
questo è il motivo per cui alcuni siti (incluso questo) registrano un dominio dedicato da utilizzare come CDN.
Non è possibile poiché il dominio dei cookie è tail matched rispetto al nome del dominio . Dovrai andare con www.