web-dev-qa-db-fra.com

Comment configurer un domaine sans cookie?

J'ai lu qu'il était préférable de servir du contenu statique (css, javascript, etc.) à partir d'un domaine ou d'un sous-domaine sans cookie pour de meilleures performances. Je suppose qu'un domaine n'est pas sans cookie par défaut. Comment spécifier que je ne souhaite pas utiliser de cookies?

24
BenV

Lorsque des éléments tels que YSlow et Page Speed vous demandent de configurer des domaines sans cookie, ils signifient en réalité que vous diffusez des médias à partir d'un domaine dans lequel vous n'en définissez aucun. ou n'en avez défini aucune (globalement) dans le passé. Parfois, ceci peut être accompli en utilisant des sous-domaines, tels que media.domain.com ou static.domain.com, mais si vous définissez un cookie sur domain.com qui s'applique au domaine dans son ensemble - un cookie pour *.domain.com - alors ce cookie sera envoyé par le client au serveur à chaque demande pour chaque domaine associé à domain.com . Cela inclut tous les sous-domaines.

Le cookie global devient un problème si vous décidez de ne pas utiliser www. sur vos domaines. Sans un sous-domaine spécifique pour lequel définir un cookie, tous les cookies doivent être configurés pour *.domain.com pour qu'ils fonctionnent.

Ce problème de cookie global explique pourquoi vous verrez des médias statiques servis depuis des lieux tels que ytimg.com sur YouTube. ytimg.com ne servira jamais de contenu dynamique pouvant créer des cookies, ce qui signifie qu'aucun cookie ne sera envoyé du client au serveur lorsque ces domaines font partie des demandes HTTP.

Si vous êtes certain de ne jamais créer de cookie pour *.domain.com, vous pouvez utiliser un sous-domaine pour répondre à vos besoins. Sachez que la plupart du temps, si vous intégrez un autre site ou service via Javascript, ils définiront des cookies de domaine globaux.

Dans Apache (et tous les autres serveurs Web, j'en suis sûr), vous pouvez définir ou désactiver les en-têtes avant que les demandes ne soient traitées. Cela ne résoudra pas le problème de l'envoi du cookie par le client à votre serveur, mais empêchera vos domaines d'envoyer ou de configurer des cookies. Un problème uniquement si vous servez du contenu qui n’est pas statique à partir de vos domaines sans cookies, ce qui va à l’encontre de leur objectif.

Header unset Cookie
Header unset Set-Cookie 

Cela désactivera les en-têtes des cookies existants et de la création de nouveaux cookies. Encore une fois, un problème uniquement si vous servez du contenu de vos domaines statiques susceptible de créer un cookie. Placez-le dans la configuration de votre site ou de virtualhost (qui, en fonction de votre système d'exploitation, de votre serveur et de sa version, peut correspondre à un nombre illimité d'emplacements).

26
Bryson

Comment spécifier que je ne souhaite pas utiliser de cookies?

Ce n’est pas ce que vous devez faire pour avoir un domaine sans cookie - c’est plutôt ce que vous devez ne pas faire ... Pour avoir un domaine sans cookie, vous devez vous assurer que votre application fonctionnant sur ce domaine ne crée aucun cookie . Cela signifie généralement ne pas avoir de connexions, pas de Google Analytics, pas de sessions - c’est-à-dire servir des médias et rien d’autre. Évidemment, cela dépend de votre configuration.

Une erreur que j'ai commise récemment est que je n'ai pas fait la distinction entre un domaine et un sous-domaine. J'ai commencé à servir tous mes médias à partir de http://media.example.com en pensant que c'était un domaine sans cookie, mais en réalité il s'agit d'un sous-domaine - et j'ai trouvé beaucoup de mes les cookies du site principal http://www.example.com où ils sont définis au niveau du domaine et polluent donc mon sous-domaine supposé sans cookie. Voici le lien pour savoir comment j'ai résolu ce problème: https://serverfault.com/questions/160210/nginx-serve-static-content-from-a-cookieless-domain

6
Tom

Comment spécifier que je ne souhaite pas utiliser de cookies?

Vous n'êtes pas obligé de spécifier que vous ne voulez pas utiliser de cookies, vous ne les utilisez pas.

3
delete