domänenübergreifende
Betrieb von Cookies scheint ein einfaches Problem zu sein, da Sie nur das Domänenattribut als Stammdomänennamen der angegebenen Website angeben müssen.
Bei der tatsächlichen Verwendung sind jedoch einige Probleme aufgetreten, was in der Tat erwähnenswert ist
Cookie im WWW-Hauptdomänennamen Erstellen Sie es unter und schreiben Sie das Domänenattribut, z. B.: (Zur Vereinfachung des Debuggens sind die folgenden Codes alle ASP-Codes)
Code:
Write.asp
<%
Response.Cookies(CookieName)("Benutzername") = "SunBird"
Response.Cookies(CookieName)("Passwort") = "xyz1234"
Response.Cookies(CookieName).Domain = „xxxx.com“
%>
Code
zum Lesen von Cookies wird im selben Verzeichnis abgelegt
:Read.asp
<%
Response.Write Request.Cookies(CookieName)("Benutzername")
Response.Write Request.Cookies(CookieName)("Passwort")
%>
Fügen Sie dann eine Read.asp-Datei mit demselben Code wie oben in eine andere Subdomain-Site ein.
Schließlich erstellen wir ein weiteres Clear.asp, um Cookies zu löschen, und platzieren es unter dem Hauptdomänennamen.
Code:
Clear.asp
<%.
Response.Cookies(CookieName)("Benutzername") = ""
Response.Cookies(CookieName)("Password") = ""
Response.Cookies(CookieName).Domain = „xxxx.com“
%>
Jetzt können Sie es mit der folgenden Ausführungssequenz testen: Write.asp -> Read.asp des Hauptdomänennamens -> Read.asp des Subdomänennamens. Alle Read.asp-Seiten können den Wert des von erstellten Cookies lesen Schreiben Sie.asp und führen Sie dann Clear.asp erneut aus, um es zu löschen. Alles ist in Ordnung und es scheint kein Problem zu geben.
Bei der Anwendung dieser Methode auf tatsächliche Websites treten jedoch Probleme auf.
Problembeschreibung:
Bei der ersten Anmeldung ist alles in Ordnung. Alle Subdomainnamen können auf die im Hauptdomainnamen gespeicherten Cookies zugreifen. Sobald Sie sich jedoch abmelden, werden die Cookies der Subdomainnamen gelöscht, die Cookies des Hauptdomainnamens jedoch Nach dem erzwungenen Löschen der Cookies des Hauptdomänennamens können Cookies nicht gespeichert werden, unabhängig davon, wie Sie sich beim Hauptdomänennamen anmelden, es sei denn, Sie schließen den Browser und öffnen ihn erneut.
Nach vielen Versuchen habe ich das Problem zufällig entdeckt. Das Folgende ist der Testvorgang.
Erstellen Sie eine Write2.asp-Seite und platzieren Sie sie unter dem Hauptdomänennamen
<%
Response.Cookies(CookieName)("TEST_COOKIE") = "TEST_COOKIE"
%>
Schritt 1: Führen Sie nach dem Schließen des Browsers die folgende Reihenfolge aus: Write.asp -> Read.asp des Hauptdomänennamens -> Read.asp des Subdomänennamens. Hier liest alles Read.asp normal.
Schritt 2: Clear.asp -> Read.asp des Hauptdomänennamens -> Read.asp des Subdomänennamens Der Löschvorgang ist hier erfolgreich.
Schritt 3: Write.asp -> Write2.asp -> Hauptdomänenname Read.asp -> Subdomänenname Read.asp An diesem Punkt können beide Read.asp den Cookie-Wert lesen.
Schritt 4: Führen Sie Schritt 2 erneut aus und stellen Sie fest, dass der Hauptdomänenname Read.asp weiterhin den Wert ausgibt, während der Wert von Read.asp unter dem Subdomänennamen gelöscht wurde.
Basierend auf dem obigen Test fassen wir die folgenden Punkte zusammen, auf die Sie bei der domänenübergreifenden Verwendung von Cookies achten müssen:
1. Wenn Sie eine Cookie-Gruppe (oder ein Cookie-Wörterbuch) haben und das Domänenattribut verwenden, um den Domänennamen anzugeben, wenn Sie Ändern oder fügen Sie der Gruppe neue Mitglieder hinzu. Achten Sie beim Hinzufügen darauf, nach dem Vorgang das Attribut Resonse.Cookies(CookieName).Domain hinzuzufügen.
2. Wenn dies nicht erforderlich ist, ändern Sie bitte nicht die Cookie-Gruppe, für die die Domäne festgelegt wurde, und verwenden Sie direkt Response.Cookies("CookieText") = CookieValue, um ein neues Cookie zu erstellen.