Le fonctionnement des cookies entre domaines semble être un problème simple, car il suffit de spécifier l'attribut Domaine comme nom de domaine racine du site Web spécifié.
Cependant, l'auteur a rencontré certains problèmes lors de l'utilisation réelle, ce qui mérite d'être
noté.
Cookie dans le nom de domaine principal www Créez-le sous et écrivez l'attribut de domaine, tel que : (Pour faciliter le débogage, les codes suivants sont tous des codes asp)
Code :
Write.asp
<%
Réponse.Cookies(CookieName)("UserName") = "SunBird"
Réponse.Cookies(CookieName)("Mot de passe") = "xyz1234"
Réponse.Cookies(CookieName).Domain = "xxxx.com"
%>
code
Read.asppour la lecture des cookies est placé dans le même répertoire
:Read.asp
<%
Response.Write Request.Cookies(CookieName)("Nom d'utilisateur")
Response.Write Request.Cookies(CookieName)("Mot de passe")
%>
Placez ensuite un fichier Read.asp dans un autre site de sous-domaine, avec le même code que ci-dessus.
Enfin, nous créons un autre Clear.asp pour effacer les cookies et le plaçons sous le nom de domaine principal
Code :
Clear.asp
<%.
Réponse.Cookies(CookieName)("UserName") = ""
Réponse.Cookies(CookieName)("Mot de passe") = ""
Réponse.Cookies(CookieName).Domain = "xxxx.com"
%>
Vous pouvez maintenant le tester via la séquence d'exécution suivante, Write.asp-->Read.asp du nom de domaine principal-->Read.asp du nom de sous-domaine. Toutes les pages Read.asp peuvent lire la valeur du cookie créé par. Écrivez.asp, puis exécutez à nouveau Clear.asp pour l'effacer, tout va bien et il ne semble y avoir aucun problème.
Mais l’application de cette méthode à des sites réels pose des problèmes.
Description du problème :
Tout va bien lors de la première connexion. Tous les noms de sous-domaines peuvent accéder aux cookies stockés dans le nom de domaine principal. Cependant, une fois que vous vous déconnectez, les cookies des noms de sous-domaines sont effacés, mais les cookies du nom de domaine principal le sont. toujours conservés. Après avoir effacé de force les cookies du nom de domaine principal, quelle que soit la manière dont vous vous connectez au nom de domaine principal, les cookies ne peuvent pas être enregistrés à moins que vous ne fermiez le navigateur et que vous le rouvrez.
Après de nombreuses tentatives, j'ai accidentellement découvert le problème. Voici le processus de test.
Créez une page Write2.asp et placez-la sous le nom de domaine principal
<%
Réponse.Cookies(CookieName)("TEST_COOKIE") = "TEST_COOKIE"
%>
Étape 1 : Après avoir fermé le navigateur, exécutez dans l'ordre suivant : Write.asp-->Read.asp du nom de domaine principal-->Read.asp du nom de sous-domaine Ici, tous les Read.asp se lisent normalement.
Étape 2 : Clear.asp-->Read.asp du nom de domaine principal-->Read.asp du nom de sous-domaine L'opération de suppression est réussie ici.
Étape 3 : Write.asp --> Write2.asp --> Nom de domaine principal Read.asp --> Nom de sous-domaine Read.asp À ce stade, les deux Read.asp peuvent lire la valeur du cookie.
Étape 4 : réexécutez l'étape 2 et constatez que le nom de domaine principal Read.asp affiche toujours la valeur, tandis que la valeur de Read.asp sous le nom de sous-domaine a été effacée.
Sur la base du test ci-dessus, nous résumons les points suivants auxquels vous devez prêter attention lorsque vous utilisez des cookies sur plusieurs domaines :
1. Lorsque vous disposez d'un groupe de cookies (ou d'un dictionnaire de cookies) et que vous utilisez l'attribut Domaine pour spécifier le nom de domaine, lorsque vous modifier ou ajouter de nouveaux membres au groupe Lors de l'ajout, assurez-vous d'ajouter l'attribut Resonse.Cookies(CookieName).Domain après l'opération.
2. Si cela n'est pas nécessaire, veuillez ne pas modifier le groupe de cookies pour lequel le domaine a été défini et utiliser directement Response.Cookies("CookieText") = CookieValue pour créer un nouveau cookie.