/ / Wie erhalte ich JSON-Daten über Javascript mit Cookies-Authentifizierung? - Javascript, Ruby-on-Rails, Authentifizierung, Cookies, Rack

Wie bekomme ich JSON-Daten über Javascript mit Cookies Authentifizierung? - Javascript, Ruby-on-Rails, Authentifizierung, Cookies, Rack

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.localIch 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/medirekt 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 № 1

Foursquare 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.