11
votes

PHP Setcookie () pour domaine mais pas sous-domaines

Y a-t-il un moyen de définir un cookie qui est pas lisible sur les sous-domaines? En d'autres termes, avoir le cookie disponible sur domain.com , mais pas www.domain.com ou xyz.domain.com JS File, etc.

... Dois-je revenir à l'aide de www.domain.com pour mon site? Y a-t-il des solutions de contournement?


1 commentaires

Réglage du domaine sur NULL est la seule chose correcte à faire ici. Sinon, vous pourriez trouver $ cookie -> SetDomain ($ domaine) utile, comme trouvé dans Cet autonome Bibliothèque .


4 Réponses :


6
votes

C'est la raison pour laquelle une raison quelconque de quelques sites (y compris celui-ci) enregistre un domaine dédié destiné à être utilisé comme CDN.


0 commentaires

18
votes

Apparemment, avoir un cookie sur "domain.com" qui correspondra "* .domain.com" est un comportement attendu.

Par exemple: Cookies HTTP de l'état du client persistant Etat (une importance accordée à la mine ) :

domaine = nom_formé

Lorsque vous recherchez la liste de cookies pour cookies valides, une comparaison de la Les attributs de domaine du cookie sont fait avec le nom de domaine Internet de l'hôte à partir de laquelle l'URL sera récupéré. ...
"assortie queue" signifie Cet attribut de domaine est assorti contre la queue du pleinement Nom de domaine qualifié de l'hôte. a Attribut de domaine de "acme.com" serait correspond à des noms d'hôte "anvil.acme.com" comme ainsi que "expédition.crate.acme.com" .

seuls hôtes dans le 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 en eux à prévenir les domaines de la forme: ".com", ".edu" et "VA.US". Tout domaine qui échoue dans l'un des sept spéciaux spéciaux Domaines de niveau supérieur énumérés ci-dessous seulement nécessite deux périodes. Tout autre domaine nécessite au moins trois. Les sept Les domaines de haut niveau spéciaux sont: "com", "Edu", "NET", "ORG", "GOV", "MIL", ET "INT".

Donc, vous devrez soit:

  • Utilisez " www.domain.com " pour votre site
  • ou utilisez un nom de domaine totalement différent pour votre contenu statique (comme " .anotherdomain.com ")
    • Par exemple, c'est ce qui se fait sur Stackoverflow: le contenu statique est servi à partir de Sstatic.net

3 commentaires

Belle explication, +1 ici aussi.


Wow, super info. Je n'ai pas coulé sur ça en creusant. Merci mec. Je suppose que cela répond à ma question ... www.domain.com c'est.


Vous êtes les bienvenus :-) Amusez-vous! (et, si vous utilisez www.domain.com pour votre site Web et vos cookies, n'oubliez pas de vous assurer que "domain.com", lorsqu'il est utilisé pour accéder à votre site, redirige vers "www.domain.com" - ne pas Selon le navigateur pour le faire automatiquement: cela ne fonctionne pas toujours - ne fonctionne pas derrière un proxy, parfois, par exemple (c'est le cas où je travaille et c'est une douleur))



1
votes

Il n'est pas possible car le domaine de la cookie est queue correspondant à contre le nom de domaine . Vous devrez y aller www.


0 commentaires

1
votes

de cource que vous pouvez! C'est ce que la plupart des sites Web font. Même la fonction PHP intégrée session_start () code> Est-ce que cela. et son en-tête de réponse HTTP Set-Cookie a l'air aussi simple que ceci: xxx pré>

selon RFC 6265, section 4.1.2.3 , la dernière déclaration du paragraphe: p>

Si le serveur omet l'attribut de domaine, l'utilisateur L'agent retournera le cookie seul em> strong> au serveur d'origine. P> blockquote>

Donc, tout ce que vous avez à faire est d'omettre l'attribut de domaine lors de la configuration de la cookie à partir de votre domain.com code> p>

setcookie($name,$value,$expires,'/','');


0 commentaires