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, qui méritent effectivement d'être notés
.
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)
Write.asp
code de programme
<%
Réponse.Cookies(CookieName)("UserName") = "SunBird"
Réponse.Cookies(CookieName)("Mot de passe") = "xyz1234"
Réponse.Cookies(CookieName).Domain = "xxxx.com"
%>
Read.asp
pour la lecture des cookies est placé dans le même répertoire.
code de programme
<%
Response.Write Request.Cookies(CookieName)("Nom d'utilisateur")
Response.Write Request.Cookies(CookieName)("Mot de passe")
%>
Placez ensuite un document 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
Clear.asp
code de programme
<%
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. Toute page Read.asp peut lire la valeur du cookie créé par. Write.asp. Ensuite, exécutez Clear.asp pour l'effacer, tout va bien, http://bizhi.downcodes.com/ ne semble 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. N'importe quel nom de sous-domaine peut accéder aux cookies stockés dans le nom de domaine principal. Cependant, une fois que vous vous déconnectez, les cookies du nom de sous-domaine sont effacés, mais les cookies du nom de domaine principal. Le nom de domaine principal est toujours conservé. Le nom de domaine principal est effacé de force. Après avoir défini le cookie, quelle que soit la manière dont vous vous connectez au nom de domaine principal, le cookie ne peut être enregistré que si vous fermez le navigateur et 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
code de programme
<%
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. Tout Read.asp ici se lit 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 du domaine configuré. Utilisez directement Response.Cookies("CookieText") = CookieValue pour créer un nouveau cookie.