Passport js kann die Sitzung nicht domänenübergreifend verwalten

8

Ich benutze Pass JS, Express und Mungo, um eine API zu machen. Wenn ich es in der gleichen Domäne teste, behält es Sitzung bei und funktioniert gut. Aber im Cross-Bereich schlägt es fehl. Irgendwelche Hinweise wie kann ich die Sitzung in Cross-Domain mit der gleichen Konfiguration pflegen. Folgendes ist der Code

%Vor%     
Kundu 27.09.2013, 05:48
quelle

3 Antworten

6

Ich hatte das gleiche Problem. Bevor Sie etwas in der Express-App konfigurieren, verwenden Sie Folgendes (genau das Gleiche), um den Header der Antwort für die domänenübergreifende Antwort festzulegen:

%Vor%

Es funktioniert für mich. Viel Glück!

    
sam100rav 26.11.2013 14:08
quelle
4

Nach Sriharshas Antwort:

  • Setzen Sie res.header("Access-Control-Allow-Credentials", "true");

  • Stellen Sie sicher, dass Sie die Anmeldeinformationen im clientseitigen Anruf übergeben. Zum Beispiel für AJAX, füge dies deinem Aufruf hinzu: xhrFields: {withCredentials: true},

Zusätzlich:

  • Verwenden Sie den Platzhalter für Access-Control-Allow-Origin nicht mit einer Anmeldungsanforderung

    Wie im MDN erklärt :

      

    Beim Antworten auf eine Credential-Anfrage muss der Server a angeben   Domäne und kann keine Wildcarding verwenden

Ich benutze diese Datei und rufe sie von meinem Hauptmodul mit require("./enable-cors.js")(app);

auf %Vor%     
Crocodile 17.10.2014 01:49
quelle
2

Erlauben Sie die gemeinsame Nutzung der Anmeldeinformationen, indem Sie den Header Access-Control-Allow-Credentials setzen. (Ich bin nicht sicher, warum Sie in Ihrem Code kommentiert haben)

%Vor%

dann übergeben Sie die Anmeldeinformationen von Javascript über das XHR-Objekt.

%Vor%     
Sriharsha 27.09.2013 06:06
quelle

Tags und Links