3 Stimmen

Firefox Bleipunkt in Cookie Problem

Wir haben ein ärgerliches Problem mit Firefox und Cookies. Wir haben die folgenden Domains:

sub1.meine-domain.de sub2.meinedomain.de sub3.meinedomain.de anderedomain.de

Wir haben unser Framework so umgestellt, dass es mehrsprachig ist und eine Dropdown-Liste bietet, um die Sprache an jedem Punkt der Website zu ändern.

Die Codebasis wird von allen oben genannten Bereichen gemeinsam genutzt.

Wir können kein Cookie für alle "mydomain.com"-Seiten setzen, sondern nur für die einzelnen Unterdomänen. Damit dies funktioniert, setzen wir ein JavaScript-Cookie, wenn der Benutzer eine neue Sprache auswählt. Wenn die Seite an den Server zurückgesendet wird, nimmt der Code dies auf und setzt die Benutzereinstellungen auf den neuen Sprachcode (dies ist alles C# und ASP.NET).

Wir müssen den Host auf "subX.meinedomain.com" und den Pfad auf "/" im Cookie setzen, damit er nur für die Subdomain und alle Teile dieser Domain gilt.

Dies funktioniert mit allen Browsern außer FireFox. Es scheint, dass Firefox ein DOT an den Anfang der Domain anhängt, also ".subX.mydomain.com".

Wenn der Code mit FireFox zurückgegeben wird, ist das Cookie immer null.

Ist jemandem diese Situation schon einmal passiert (ich kann mir vorstellen, dass das nicht so ungewöhnlich ist). Ich habe eine Menge Leute lesen, die sagen, entfernen Sie die Domäne aus dem Cookie, aber das kann nicht für uns arbeiten, wie wir mehrere Subdomänen, die ihre eigenen Cookie-Werte benötigen.

EDITAR

var d = new Date();
d.setYear(d.getYear() + <%# CookieLangYearExpireOffset %>);
document.cookie = '<%# CookieLangKey %>=' + langCode + '; expires=' + d.toUTCString() + '; domain=' + window.location.hostname + '; path=/';    
var currentUrl = location.href;
var questionMarkIndex = currentUrl.lastIndexOf('?');
if (questionMarkIndex > 0) {
    currentUrl = currentUrl + '&rand=' + Math.floor(Math.random() * 1001);
}
else {
   currentUrl = currentUrl + '?rand=' + Math.floor(Math.random() * 1001);
}
window.location.href = currentUrl;

Die serverseitigen Codeteile dienen lediglich dazu, dass die Server- und die Clientseite denselben Gültigkeitszeitraum und dieselbe Namensvariable verwenden.

Danke

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X