2008-08-28 13 views
8

Hier ist mein Problem - ich möchte zwischen zwei Websites kommunizieren und ich bin auf der Suche nach einer sauberen Lösung. Die aktuelle Lösung verwendet Javascript, aber es gibt scheußliche Problemumgehungen wegen der (verständlichen) Cross-Site-Scripting-Einschränkungen.Kommunikation zwischen Websites (mit Javascript oder?)

Im Moment Website A öffnet ein modales Fenster Website B mit einem Plug-in jQuery genannt jqModal enthält. Website B funktioniert und gibt einige Ergebnisse an Website A zurück. Um diese Informationen zurückzugeben, müssen wir Cross-Site-Scripting-Einschränkungen umgehen - Website B erstellt einen Iframe, der auf eine Seite unter Website A verweist und * Fragment-IDs enthält, die die zurückzugebenden Informationen enthalten. Der Iframe wird von Website A die zurückgegebenen Informationen zu erfassen. es ist ein common technique aber es ist hacky.

es gibt Varianten wie CrossSite und ich konnte vielleicht eine HTTP-POST von Website B zu Webseite verwenden A aber ich versuche, um Seitenerfrischungen zu vermeiden

Hat jemand Alternativen?

EDIT: Ich möchte vermeiden, dass Zustand auf Website B speichern.

Antwort

5

Mein bester Vorschlag auf jeder Seite eine Webservice zu erstellen wäre verwenden, die andere mit den Informationen nennen könnten, die erhalten geben muss. Wenn Sicherheit erforderlich ist, können Sie diesem System problemlos ein SSL-ähnliches Authentifizierungsschema (oder sogar echtes SSL) hinzufügen, um sicherzustellen, dass nur die beiden Server mit ihren jeweiligen Webdiensten kommunizieren können.

Dies würde Sie die Hackerei vermeiden, die jedem Schema innewohnt, das eine Seite mit sich bringt, die Fenster auf der anderen öffnet.

3

Mit jQuery neuen als 1.2 können Sie JSONP

0

@jmein - Sie haben beschrieben, wie Sie ein modales Popup erstellen (das ist genau das, was jqModal tut), aber Sie haben übersehen, dass der Inhalt des modalen Fensters aus einer anderen Domäne stammt. Die beiden beteiligten Domänen gehören zu zwei getrennten Unternehmen und können nicht so kombiniert werden, wie Sie es beschreiben.