Ich habe zwei Webapps WebApp1 und WebApp2 in zwei verschiedenen Domänen.
- Ich setze ein Cookie in WebApp1 in der HttpResponse.
- Wie lese ich das gleiche Cookie von HttpRequest in WebApp2?
Ich weiß, dass es seltsam klingt, weil Cookies für eine bestimmte Domain spezifisch sind und wir nicht von verschiedenen Domains aus darauf zugreifen können. Ich habe jedoch von CROSS-DOMAIN-Cookies gehört, die von mehreren Webanwendungen gemeinsam genutzt werden können. Wie kann diese Anforderung mithilfe von CROSS-DOMAIN-Cookies implementiert werden?
Hinweis: Ich versuche dies mit J2EE-Webanwendungen
quelle
Wie andere Leute sagen, können Sie keine Cookies teilen, aber Sie könnten Folgendes tun:
Natürlich ist es nicht vollständig sicher, und Sie müssen dazu eine Art internes Protokoll zwischen Ihren Apps erstellen.
Schließlich wäre es für den Benutzer sehr ärgerlich, wenn Sie bei jeder Anfrage so etwas tun, aber nicht, wenn es nur die erste ist.
Aber ich denke, es gibt keinen anderen Weg ...
quelle
cookiebaker
wäre besser ;-)Soweit ich weiß, sind Cookies durch die Richtlinie "gleichen Ursprungs" beschränkt. Mit CORS können Sie jedoch die Cookies "Server B" empfangen und verwenden, um eine dauerhafte Sitzung von "Server A" auf "Server B" einzurichten.
Dies erfordert jedoch einige Header auf "Server B":
Und Sie müssen das Flag " withCredentials " für alle "Server A" -Anfragen senden (Beispiel:
xhr.withCredentials = true;
)Sie können hier darüber lesen:
http://www.html5rocks.com/de/tutorials/cors/
https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS
quelle
Es gibt keine domänenübergreifenden Cookies. Sie könnten ein Cookie zwischen
foo.example.com
undbar.example.com
aber niemals zwischenexample.com
und teilen,example2.com
und das aus Sicherheitsgründen.quelle
foo.example.com
undbar.example.com
?Die klügste Lösung besteht darin, den Weg von Facebook zu beschreiten. Woher weiß Facebook, wer Sie sind, wenn Sie eine Domain besuchen? Es ist eigentlich sehr einfach :
Über die Schaltfläche "Gefällt mir" kann Facebook tatsächlich alle Besucher der externen Website verfolgen, unabhängig davon, ob sie darauf klicken oder nicht. Facebook kann dies tun, weil sie einen Iframe verwenden , um die Schaltfläche anzuzeigen. Ein Iframe ist so etwas wie ein eingebettetes Browserfenster innerhalb einer Seite. Der Unterschied zwischen der Verwendung eines Iframes und eines einfachen Bildes für die Schaltfläche besteht darin, dass der Iframe eine vollständige Webseite enthält - von Facebook . Auf dieser Seite ist nicht viel los, außer der Schaltfläche und den Informationen darüber, wie vielen Personen die aktuelle Seite gefallen hat.
Wenn Sie also auf cnn.com einen Like-Button sehen, besuchen Sie gleichzeitig eine Facebook-Seite. Auf diese Weise kann Facebook ein Cookie auf Ihrem Computer lesen, das beim letzten Anmelden bei Facebook erstellt wurde.
Eine grundlegende Sicherheitsregel in jedem Browser ist, dass nur die Website, die ein Cookie erstellt hat, es später lesen kann. Und das ist der Vorteil des iframe: Facebook kann Ihren Facebook-Cookie auch dann lesen, wenn Sie eine andere Website besuchen. So erkennen sie dich auf cnn.com und zeigen deine Freunde dort an.
Quelle:
quelle
Tun Sie, was Google tut. Erstellen Sie eine PHP-Datei, die das Cookie für alle drei Domänen setzt. Erstellen Sie dann in der Domäne, in der das Thema festgelegt werden soll, eine HTML-Datei, die die PHP-Datei lädt, die Cookies auf die anderen beiden Domänen setzt. Beispiel:
Fügen Sie dann einen Onload-Rückruf für das Body-Tag hinzu. Das Dokument wird nur geladen, wenn die Bilder vollständig geladen sind, dh wenn Cookies auf den anderen beiden Domänen gesetzt werden. Onload-Rückruf:
Wir setzen die Cookies auf den anderen Domains mit einer PHP-Datei wie folgt:
Jetzt werden Cookies auf die drei Domains gesetzt.
quelle
Sie können Cookies nicht domänenübergreifend freigeben. Sie können jedoch allen Subdomains Zugriff gewähren. Stellen Sie
example.com
die Domäne auf ein, damit alle Subdomains Zugriff haben.example.com
.Es ist jedoch nicht möglich,
otherexample.com
Zugriff aufexample.com
die Cookies zu gewähren .quelle
.google.com
, dass beim Surfen auf YouTube Cookies angezeigt werden?Sie können versuchen, das Cookie-Val mithilfe eines Image-Tags in eine andere Domain zu verschieben.
Ihr Kilometerstand kann variieren, wenn Sie dies versuchen, da für einige Browser eine ordnungsgemäße P3P-Richtlinie für die WebApp2-Domäne erforderlich ist. Andernfalls lehnt der Browser das Cookie ab.
Wenn Sie sich die p3p-Richtlinie von plus.google.com ansehen, werden Sie feststellen, dass ihre Richtlinie lautet:
CP = "Dies ist keine P3P-Richtlinie! Weitere Informationen finden Sie unter http://www.google.com/support/accounts/bin/answer.py?hl=de&answer=151657 ."
Dies ist die Richtlinie, die sie für ihre + 1-Schaltflächen für diese domänenübergreifenden Anforderungen verwenden.
Eine weitere Warnung ist, dass Sie bei https sicherstellen müssen, dass das Image-Tag auf eine https-Adresse verweist, da sonst keine Cookies gesetzt werden.
quelle
Es gibt einen anständigen Überblick über Hier auf nfriedly.com gibt es einen guten wie Facebook das macht
Es gibt auch Browser-Fingerabdrücke, die nicht mit einem Cookie identisch sind, aber einen ähnlichen Zweck erfüllen, da sie Ihnen helfen, einen Benutzer mit einem angemessenen Maß an Sicherheit zu identifizieren. Es gibt hier einen Beitrag über Stapelüberlauf , der auf eine Methode des Fingerabdrucks verweist
quelle
Man kann unsichtbare Iframes verwenden, um die Cookies zu erhalten. Angenommen, es gibt zwei Domains, a.com und b.com. Für die index.html der Domain a.com kann man hinzufügen (Höhe beachten = 0 Breite = 0):
Auf diese Weise erhält Ihre Website b.com-Cookies, sofern http://b.com die Cookies setzt.
Das nächste wäre, die Site innerhalb des Iframes über JavaScript zu manipulieren. Die Operationen in iframe können zu einer Herausforderung werden, wenn man die zweite Domain nicht besitzt. Wenn Sie jedoch Zugriff auf beide Domains haben, sollten Sie auf die richtige Webseite im src von iframe verweisen und die Cookies erhalten, die Sie erhalten möchten.
quelle
Web.config
Schließen Sie den UI-Ursprung ein und setzen Sie Allow Crentials auf true
quelle
Ich habe ein NPM-Modul erstellt, mit dem Sie lokal gespeicherte Daten domänenübergreifend austauschen können: https://www.npmjs.com/package/cookie-toss
Mithilfe eines in Domäne A gehosteten Iframes können Sie alle Ihre Benutzerdaten in Domäne A speichern und auf diese Daten verweisen, indem Sie Anforderungen an den Iframe in Domäne A senden.
Somit können die Domänen B, C usw. den Iframe einfügen und Anforderungen an ihn senden, um die gewünschten Daten zu speichern und darauf zuzugreifen. Domäne A wird zum Hub für alle gemeinsam genutzten Daten.
Mit einer Domain-Whitelist innerhalb von Domain A können Sie sicherstellen, dass nur Ihre abhängigen Sites auf die Daten in Domain A zugreifen können.
Der Trick besteht darin, den Code im Iframe in Domäne A zu haben, der erkennen kann, welche Daten angefordert werden. Die README-Datei im obigen NPM-Modul geht ausführlicher auf die Prozedur ein.
Hoffe das hilft!
quelle
Lesen Sie
Cookie
einWeb Api
quelle