Ich erstelle eine Anwendung mit Ruby on Rails. Die Anwendung ist eine Javascript - Anwendung, die Daten über JSON - Aufrufe von der Website abruft api
Anwendung. Es bietet auch die domänenübergreifende Authentifizierung für die Anwendung selbst und die api
.
Die domänenübergreifende Authentifizierung wird ausgeführt, indem beide Anwendungs-Cookies mit demselben geheimen Sitzungsschlüssel und demselben Namen erstellt werden, z. _app_an_api_session
.
Jetzt schreibe ich das Szenario auf und zeige es Ihnen, wenn es fehlschlägt.
Die Anwendungsdomäne ist domain.local
die API-Domain api.domain.local
Lass uns das sagen api.domain.local/me
ist eine geschützte Seite. Als ich es öffne, habe ich unauthenticated
Wenn ich zur Bewerbung gehe und sign in
und geh zu api.domain.local/me
wieder kann ich die daten darin sehen. [Pass] [funktioniert auch für die gegenteiligen Aktionen].
Das Problem ist zum Beispiel danach sign in
Ich möchte laden api.domain.local/me
Inhalt [JSON-Daten] in domain.local
Ich kann in der Konsole sehen, dass die status
ist (canceled)
.
Außerdem zum Debuggen. Ich habe versucht, die zu sehen env
variabel bei jeder Anfrage an die api
. Also, wenn ich auf die api.domain.local/me
direkt kann ich den cookies hash in der konsole sehen, sonst wenn es über die reale anwendung geht, gibt es überhaupt keine cookies / sitzungen.
Also, wie kann man das richtig machen?
Antworten:
1 für die Antwort № 1Foursquare hatte einen schönen Beitrag darüber, wie man das mit einem iFrame macht.
http://engineering.foursquare.com/2011/12/08/web-sites-are-clients-too/
0 für die Antwort № 2
Ihr Problem ist die Same-Origin-Richtlinie, die die Kommunikation zwischen verschiedenen Domänen und Unterdomänen verhindert. Sie können dies entweder über einen Proxy, JSON-P oder einen externer Proxy.