2010-11-19 9 views
2

Ich habe ein Problem mit JSONP und Cookies, die vom Browser gesendet werden.Cookies und JSONP

Eigentlich habe ich zwei Websites: Server1 und Server2. Ich möchte, dass sich meine Benutzer bei Server1 authentifizieren, und wenn sie zu Server2 wechseln, möchte ich (über einen JavaScript-JSONP-Aufruf an Server1) prüfen, ob sie authentifiziert sind.

Die Authentifizierung auf Server1 wird durch Cookies verwaltet und ich dachte, dass der Browser die Cookies senden würde, wenn ich meinen Anruf bei Server1 über JSONP tätige, und dann würde die Authentifizierung funktionieren. Aber es scheint, dass der Browser (FF) die Cookies nicht an Server1 sendet, wenn er eine Anfrage über JSONP sendet.

Weiß jemand, ob Browser Cookies bei der Anfrage mit JSONP senden? Wenn dies nicht der Fall ist, was wäre die bessere Lösung für das Einchecken von JavaScript, wenn ein Benutzer auf Server1 von Server2 authentifiziert wird?

Vielen Dank für Ihre Antworten,

Vincent

+0

Laden Sie einen versteckten iFrame von Server2 auf der server1-Seite und holen Sie dann die Cookies usw., die Sie im iFrame benötigen. Übergeben Sie die Nachricht per Javascript an den Server1. –

Antwort

1

Es hängt von Domain-Namen dieser Server. Wenn sie server1.example.com und server2.example.com sind, können Sie festlegen, dass Cookies von der Domäne .example.com abhängig sind. Dann werden die Cookies an beide Server gesendet.

Wenn Sie es nicht tun können, wie ich geschrieben habe, müssen Sie einige Abhilfe schaffen. Zum Beispiel von iFrame.

0

Ich stimme dem zu, was @Jakub sagte und weiter zu erklären, was in Ihrem Fall passieren könnte. Ich nehme an, dass Sie Domänen wie server1.com und server2.com haben

Also, wenn Sie ein Cookie von Anwendung, die auf server2.com ist und eine JSONP-Anfrage zu Anwendung, die auf server1.com von ist server1.com sendet Cookies, wenn sie zuvor von server1.com gesetzt wurden. Andernfalls würde es keine Cookies senden, die von server2.com gesetzt wurden. Tatsächlich stellt der Browser eine Anfrage an server1.com von einer Anwendung von server2.com, die genau wie server2.com eine JavaScript-Datei von CDN oder einem anderen Server anfordert. Daher werden keine server2.com-Cookies gesendet, da dies zu einem großen Sicherheitsproblem des Browsers führen würde.

Ich hoffe, es macht Sinn.