Quelle est la différence entre la création de cookies sur le serveur et sur le client? S'agit-il de cookies côté serveur et de cookies côté client? Existe-t-il un moyen de créer des cookies qui ne peuvent être lus que sur le serveur ou sur le client?
http
cookies
session-cookies
Rahul
la source
la source
Réponses:
COOKIES HTTP
Les cookies sont des paires clé / valeur utilisées par les sites Web pour stocker des informations d'état sur le navigateur. Supposons que vous ayez un site Web (example.com), lorsque le navigateur demande une page Web, le site Web peut envoyer des cookies pour stocker des informations sur le navigateur.
Exemple de demande de navigateur:
Exemple de réponse du serveur:
Ici, deux cookies foo = 10 et bar = 20 sont stockés sur le navigateur. Le second expirera le 30 septembre. Dans chaque demande ultérieure, le navigateur renverra les cookies au serveur.
SESSIONS: cookies côté serveur
Les cookies côté serveur sont appelés «sessions». Dans ce cas, le site Web stocke un cookie unique sur le navigateur contenant un identifiant de session unique. Les informations d'état (foo = 10 et bar = 20 ci-dessus) sont stockées sur le serveur et l'identifiant de session est utilisé pour faire correspondre la demande avec les données stockées sur le serveur.
Exemples d'utilisation
Vous pouvez utiliser à la fois des sessions et des cookies pour stocker: les données d'authentification, les préférences de l'utilisateur, le contenu d'un graphique dans un site e-commerce, etc ...
Avantages et inconvénients
Ci-dessous les avantages et les inconvénients des solutions. Ce sont les premiers qui me viennent à l'esprit, il y en a sûrement d'autres.
Avantages des cookies:
Contre les cookies:
Avantages de la session:
Inconvénients de la session:
la source
secure
?Vous voulez probablement dire la différence entre les cookies Http Only et leur homologue?
Http Seuls les cookies ne sont pas accessibles (en lecture ou en écriture) dans JavaScript côté client, uniquement côté serveur. Si l'indicateur Http Only n'est pas défini ou si le cookie est créé en JavaScript (côté client), le cookie peut être lu et écrit dans JavaScript (côté client) ainsi que côté serveur.
la source
Tous les cookies sont client et serveur
Il n'y a pas de différence. Un cookie ordinaire peut être défini côté serveur ou côté client. Le cookie «classique» sera renvoyé à chaque demande. Un cookie défini par le serveur sera envoyé au client dans une réponse. Le serveur n'envoie le cookie que lorsqu'il est explicitement défini ou modifié, tandis que le client envoie le cookie à chaque demande.
Mais c'est essentiellement le même cookie.
Mais le comportement peut changer
Un cookie est essentiellement une
name=value
paire, mais après la valeur peut être un ensemble d' attributs séparés par des points-virgules qui affectent le comportement du cookie s'il est ainsi implémenté par le client (ou serveur). Ces attributs peuvent concerner la durée de vie, le contexte et divers paramètres de sécurité.HTTP uniquement (n'est pas uniquement serveur)
Un de ces attributs peut être défini par un serveur pour indiquer qu'il s'agit d'un cookie HTTP uniquement. Cela signifie que le cookie est toujours envoyé dans les deux sens, mais il ne sera pas disponible en JavaScript. Notez cependant que le cookie est toujours là! Ce n'est qu'une protection intégrée dans le navigateur, mais si quelqu'un utilise un navigateur ridiculement vieux comme IE5, ou un client personnalisé, il peut en fait lire le cookie!
Il semble donc qu'il existe des «cookies de serveur», mais il n'y en a pas. Ces cookies sont toujours envoyés au client. Sur le client, il n'y a aucun moyen d'empêcher un cookie d'être envoyé au serveur.
Alternatives pour atteindre la `` seule-ness ''
Si vous souhaitez stocker une valeur uniquement sur le serveur, ou uniquement sur le client, vous avez besoin d'un autre type de stockage, comme un fichier ou une base de données sur le serveur ou un stockage local sur le client.
la source
document.cookie="foo=bar"
suivi defetch("/foobar", {credentials: 'include'} )
, aucun cookie n'est envoyé contenantfoo=bar
. Je viens d'essayer ce code directement sur ce site en utilisant DevTools et la console.Oui, vous pouvez créer des cookies qui ne peuvent être lus que côté serveur. Celles-ci sont appelées cookies "HTTP uniquement", comme expliqué dans d'autres réponses déjà
Non, il n'y a aucun moyen (à ma connaissance) de créer des "cookies" qui ne peuvent être lus que côté client. Les cookies sont destinés à faciliter la communication client-serveur.
MAIS, si vous voulez quelque chose comme des "cookies clients uniquement", il y a une réponse simple: utilisez "Stockage local".
Le stockage local est en fait syntaxiquement plus simple à utiliser que les cookies. Un bon résumé simple des cookies par rapport au stockage local peut être trouvé sur:
https://courses.cs.washington.edu/courses/cse154/12au/lectures/slides/lecture21-client-storage.shtml#slide8
Un point: vous pouvez utiliser des cookies créés en JavaScript pour stocker des éléments liés à l'interface graphique dont vous n'avez besoin que du côté client. MAIS le cookie est envoyé au serveur pour CHAQUE requête effectuée, il fait partie des en-têtes de requête http, ce qui rend la requête contenant plus de données et donc plus lente à envoyer.
Si votre page contient 50 ressources telles que des images, des fichiers css et des scripts, le cookie est (généralement) envoyé avec chaque demande. Plus d'informations à ce sujet dans Chaque requête Web envoie-t-elle des cookies du navigateur?
Le stockage local n'a pas ces inconvénients liés au transfert de données, il n'envoie aucune donnée. C'est super.
la source