Frage

Ich möchte Sitzungscookies zwischen Domänen teilen.

Ich habe mehr als eine Domain:-

1. mydomain.com
2. mydomain.fr
3. mydomain.de
4. mydomain.da
...and many other language based

Jetzt habe ich eine einzelne Website auf einem Server bereitgestellt. Ich möchte die Sitzung zwischen den verschiedenen Domänen auf einer einzelnen Website teilen.Wie erreiche ich das?

Ich habe es im Internet gefunden <httpCookies domain=".mydomain.com" /> aber es funktioniert mit Subdomains (wie test.mydomain.com Und secure.mydomain.com), jedoch nicht für die verschiedenen Domänen.

Ich habe es auch versucht <httpCookies domain=".mydomain." /> aber zu dieser Sitzung funktionierte es nicht mehr.

Könnte mir bitte jemand helfen?

War es hilfreich?

Lösung

Sie können Cookies nicht auf Domänen mit unterschiedlichen Berechtigungen teilen Top-Level-Domain Name.

Dies ist nur mit möglich Subdomains.

mydomain.com
fr.mydomain.com
de.mydomain.com
da.mydomain.com
...

Andere Tipps

Sie können ein Cookie nicht direkt zwischen verschiedenen Domänen teilen.Aber es gibt eine Möglichkeit, dies in einem bestimmten Kontext zu ermöglichen.Sie können eine JSONP-Anfrage stellen oder einen Iframe in Ihr JS laden.Wenn Sie iframe verwenden, führen Sie einen http-POST-Aufruf über das Formular durch.Das Formular-Tag hat Ihren anderen Domänennamen als Aktion und den Iframe-Namen als Ziel.Das Formular lädt ein IFRAM und das Cookie Ihrer anderen Domain wird in Ihrem Browser abgelegt.

Code:

<iframe name="iframe-test" border="1px"></iframe>

<form id="iframe-form" target="iframe-test" action="http://differentdomain.com/setCookie" method="POST">
     <input type="hidden" value="1234" name="token">
   </form>

    <script type="text/javascript">
        function submitForm(){          
            var form = document.getElementById("iframe-form");
            form.submit();              
        }
    </script>

Wie Oded feststellt, können Sie Cookies nicht über verschiedene Top-Level-Domains hinweg teilen.Daher müssen Sie möglicherweise eine andere Methode zur Beibehaltung von Sitzungen in Betracht ziehen.

Das von danyolgiax vorgeschlagene Austauschen des Sitzungsstatus-Anbieters wird Ihr Problem nicht lösen, da die Sitzungsidentifizierung immer noch mit Cookies erfolgt.Daher müssen Sie einen Ansatz wie cookielose Sitzungen prüfen:

Cookieles-Sitzungen

Anschließend können Sie die Daten in einer Datenbank oder einer InProc-Sitzung auf dem Server speichern.Sobald Sie die Abhängigkeit von Cookies entfernt haben.

Bearbeiten

Wenn Sie außerdem eine clientseitige Aktivität durchführen, bei der ein nicht-authentifiziertes Cookie verwendet wird, bei dem die Cookies unbedingt vorhanden sein müssen, würden Sie sie basierend auf diesen auf dem Server/der Sitzung gespeicherten Werten aus jeder anderen Domäne schreiben.Ein Benutzerschaltdomänen erhält also schließlich Ihr Cookie für jede Domain.

Wenn Sie SQL Server verwenden, können Sie ihn meiner Meinung nach als Sitzungsstatusanbieter verwenden.

in web.config:

<sessionState 
        mode="SQLServer"
        sqlConnectionString="data source=127.0.0.1;user id=<username>;password=<strongpassword>"
        cookieless="false" 
        timeout="20" 
/>

Hier ein paar Dokumente:

http://msdn.microsoft.com/en-us/library/ms178581.aspx

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top