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, die in der Tat erwähnenswert sind
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)
Write.asp
Programmcode
<%
Response.Cookies(CookieName)("Benutzername") = "SunBird"
Response.Cookies(CookieName)("Passwort") = "xyz1234"
Response.Cookies(CookieName).Domain = „xxxx.com“
%>
Read.asp
zum Lesen von Cookies wird im selben Verzeichnis abgelegt.
Programmcode
<%
Response.Write Request.Cookies(CookieName)("Benutzername")
Response.Write Request.Cookies(CookieName)("Passwort")
%>
Fügen Sie dann ein Read.asp-Dokument mit demselben Code wie oben in eine andere Subdomain-Site ein. Schließlich erstellen wir ein weiteres Clear.asp zum Löschen von Cookies und platzieren es unter dem Hauptdomänennamen
Clear.asp
Programmcode
<%
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. Jede Read.asp-Seite kann den Wert des von erstellten Cookies lesen Write.asp. Führen Sie dann Clear.asp aus, um es zu löschen. Alles ist in Ordnung. http://bizhi.downcodes.com/ scheint kein Problem zu haben.
Bei der Anwendung dieser Methode auf tatsächliche Websites treten jedoch Probleme auf.
Problembeschreibung:
Beim ersten Anmelden ist alles in Ordnung. Jeder Subdomainname kann auf die im Hauptdomainnamen gespeicherten Cookies zugreifen. Sobald Sie sich jedoch abmelden, werden die Cookies des Subdomainnamens gelöscht Der Hauptdomänenname bleibt weiterhin erhalten. Nach dem Setzen des Cookies kann das Cookie nicht gespeichert werden, unabhängig davon, wie Sie sich beim Hauptdomänennamen anmelden.
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
Programmcode
<%
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. Alle Read.asp werden hier normal gelesen.
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 der konfigurierten Domäne. Verwenden Sie direkt Response.Cookies("CookieText") = CookieValue, um ein neues Cookie zu erstellen.