Fortbestehen einer Cookie-basierten Sitzung über Knoten-http-Proxy

8

Ich habe einen einfachen Express-basierten Node.js-Webserver, den ich für die Entwicklung einer JavaScript-Anwendung verwende. Ich richte den Server ein, um Node-http-Proxy zu verwenden, um API-Anforderungen, die die Anwendung an einen Jetty-Server stellt, der auf einer anderen Domäne und einem anderen Port ausgeführt wird, zu Proxy. Dieses Setup funktionierte einwandfrei, bis ich Probleme mit der Sitzungsverwaltung hatte.

Nach der Authentifizierung gibt der Anwendungsserver ein Cookie mit einem Authentifizierungs-Token zurück, das die Serversitzung darstellt. Wenn ich die JS-Anwendung von meinem Dateisystem aus starte (Datei: //), kann ich sehen, dass sobald der Client das Cookie erhält, es in allen folgenden API-Anfragen gesendet wird. Wenn ich die JS-Anwendung auf dem Knotenserver ausführe und API-Aufrufe über Knoten-http-Proxy (RoutingProxy) weitergeleitet werden, enthalten die Anforderungsheader niemals den Cookie.

Gibt es etwas, das ich manuell behandeln muss, um diese Art von Sitzungspersistenz über den Proxy zu unterstützen? Ich habe durch den Knoten-http-Proxy-Code gegraben, aber es ist ein wenig über meinen Kopf, weil ich Node neu bin.

Ссылка oder:

%Vor%     
tomswift 24.04.2012, 02:28
quelle

4 Antworten

5

Ich habe getan, was Sie fragen, indem ich die Antwort manuell ansehe, sehe, ob es ein Set-Cookie ist, die JSSESSIONID abschneide, sie in einer Variablen ablege und sie bei allen nachfolgenden Anfragen als Header übergebe. Auf diese Weise fungiert der Reverse Proxy als Cookie.

%Vor%     
httpete 29.08.2015, 10:54
quelle
0

Im Idealfall besteht die Aufgabe eines Proxys darin, eine Anfrage einfach an das Ziel weiterzuleiten und kritische Header wie Cookies nicht zu entfernen. Aber falls ja, sollten Sie hier ein Problem melden Ссылка .

Sie haben auch gesagt, dass die Request-Header niemals das Cookie enthalten. Ist es möglich, dass der Client es nie erhalten hat?

    
FUD 24.04.2012 02:56
quelle
0

Ich habe einen Weg gefunden, dies zu implementieren, indem ich Knoten-http-Proxy verzweigen und modifizieren kann. Es dient meinem gegenwärtigen Zweck, der eine Entwicklungsumgebung ist. Für jede ernsthafte Überlegung muss es zu einer legitimeren Lösung ausgebaut werden.

Die Details finden sich in der Ausgabe, die ich in GitHub eingereicht habe: Ссылка

Ich würde gerne etwas zu dieser Lösung beitragen, besonders wenn ich komplett in die falsche Richtung gehe.

    
tomswift 25.04.2012 22:02
quelle
0

Hi @tomswift führt Ihren lokalen Server mit dem http-Protokoll aus, aber der Sitzungscookie, der vom entfernten Server empfangen wird, wird mit Secure; like:

übertragen %Vor%

Wenn ja, extrahieren Sie vor der Antwort Ihres lokalen Servers auf den Client set-cookie aus der ursprünglichen Antwort (Antwort vom Remote-Server zum lokalen Server), entfernen Sie Secure; und setzen Sie den Rest in die Proxy-Antwort ( Antwort vom lokalen Server zum Client) Header wie:

%Vor%

dann wird der Client den Session-Cookie automatisch übernehmen.

Ich hoffe, es kann helfen.

    
Halt 18.09.2016 03:14
quelle