PHP setcookie () pour le domaine mais PAS les sous-domaines
Question
Existe-t-il un moyen de définir un cookie qui ne soit pas lisible sur les sous-domaines? En d'autres termes, le cookie doit être disponible sur domain.com
, mais pas www.domain.com
ou 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');
Le raisonnement: je crée un CDN statique sur un sous-domaine et ne souhaite pas que les cookies de session utilisateur soient échangés pour chaque image, fichier CSS, fichier JS, etc.
... dois-je avoir recours à www.domain.com
pour mon site? Existe-t-il des solutions de contournement?
La solution
Apparemment, disposer d'un cookie sur & domain; domain.com " qui correspondra à " *. domain.com " est le comportement attendu.
Par exemple: BISCUITS HTTP HTTP DE L'ETAT DU CLIENT PERSISTANT état ) :
domain = NOM DE DOMAINE
Lors de la recherche dans la liste de cookies cookies valides, une comparaison des les attributs de domaine du cookie sont faite avec le nom de domaine Internet de l'hôte à partir duquel l'URL sera allé chercher. ...
" Correspondance de queue " veux dire cet attribut de domaine est apparié contre la queue du pleinement nom de domaine qualifié de l'hôte. A attribut de domaine de " acme.com " aurait faire correspondre les noms d'hôte " anvil.acme.com " comme ainsi que "shipping.crate.acme.com" .Uniquement les hôtes du domaine spécifié peut définir un cookie pour un domaine et les domaines doivent avoir au moins deux (2) ou trois (3) périodes dans celles-ci pour empêcher les domaines de la forme: ".com", ".edu", et "va.us". N'importe quel domaine qui échoue dans l'un des sept spécial domaines de premier niveau répertoriés ci-dessous uniquement besoin de deux périodes. Tout autre domaine nécessite au moins trois. Les sept Les domaines de premier niveau spéciaux sont: "COM", "EDU", "NET", "ORG", "GOV", "MIL", et "INT".
Donc, vous devrez soit:
- utilisez "
www.domaine.fr
" pour votre site - ou utilisez un nom de domaine totalement différent pour votre contenu statique (par exemple, "
.anotherdomain.com
")- par exemple, c’est ce qui se fait sur stackoverflow: le contenu statique est fourni par sstatic.net
Autres conseils
C’est la raison pour laquelle bon nombre de sites (y compris celui-ci) enregistrent un domaine dédié à utiliser comme CDN.
Cela n'est pas possible car le domaine de cookie est la correspondance du nom de domaine. . Vous devrez aller avec www.