Ich mache eine einfache Anmeldung mit Node.js mit CORS und Angular.js.
Das ist --- client.example.com
macht einen POST too api.example.com/login
, bei Erfolg wird ein Session Cookie zu client.example.com
zurückgegeben und kann ebenfalls auf ein GET Dienst wie api.example.com/secret
geschützt durch den Sitzungscookie.
Das Erstellen von GET-Anfragen, die nicht durch einen Session-Cookie geschützt sind, ist kein Problem.
Letztendlich ist das Ziel hier zu authentifiziert eine clientseitige App für eine REST API, die CORS mit einem lokalen stradegy verwendet --- dh Benutzername & amp; Passwort --- auch wenn die obige Konvention nicht möglich ist.
Ich kann keine funktionierende Implementation finden, um von irgendwoher zu lernen --- zeige mir in die richtige Richtung?
Bonus: Zeigt ein funktionierendes Beispiel.
Ihr Problem ist sehr einfach, Browser erlauben das Senden von Cookies in einer Domäne nicht an eine andere Domäne gesendet werden.
Dies dient der Sicherheit. Wenn Ihr Sitzungscookie von einer beliebigen Domäne aus zugänglich ist, könnte jede Site csrf ausführen (per Definition soll csrf - die Sitzung von einer Site an einer anderen Site verwenden).
Es gibt Möglichkeiten, aber Sie sollten vorsichtig sein, wenn Sie sie anwenden.
Der einfachste Weg ist die Verwendung von Jsonp für die Anmeldung und die Ausführung domänenübergreifender Anfragen. jsonp bricht im Prinzip die cross-domain-Richtlinien von Cookies.
Sie können einen iFrame in client.example.com
Seite einbetten, die in api.example.com
liegt, der übergeordnete und der iFrame können über Nachricht senden .
Beide Möglichkeiten sind für csrf-Anfragen (von Natur aus) offen, daher sollten Sie besonders vorsichtig sein, auf welche Informationen Sie client.example.com
zugreifen dürfen.
Tags und Links javascript angularjs node.js cors