Wie kann man Cookies über den Ursprung hinweg teilen? Genauer gesagt, wie wird der Set-Cookie
Header in Kombination mit dem Header verwendet Access-Control-Allow-Origin
?
Hier ist eine Erklärung meiner Situation:
Ich versuche, ein Cookie für eine API zu setzen, die localhost:4000
in einer Web-App ausgeführt wird, auf der gehostet wird localhost:3000
.
Es scheint, dass ich die richtigen Antwortheader im Browser erhalte, aber leider haben sie keine Auswirkung. Dies sind die Antwortheader:
HTTP / 1.1 200 OK Zugriffskontrolle-Zulassen-Ursprung: http: // localhost: 3000 Variieren: Ursprung, Akzeptieren-Codierung Set-Cookie: token = 0d522ba17e130d6d19eb9c25b7ac58387b798639f81ffe75bd449afbc3cc715d6b038e426adeac3316f0511dc7fae3f7; Maximales Alter = 86400; Domain = localhost: 4000; Pfad = /; Läuft ab = Di, 19. September 2017 21:11:36 GMT; HttpOnly Inhaltstyp: application / json; Zeichensatz = utf-8 Inhaltslänge: 180 ETag: W / "b4-VNrmF4xNeHGeLrGehNZTQNwAaUQ" Datum: Montag, 18. September 2017, 21:11:36 Uhr GMT Verbindung: am Leben bleiben
Außerdem kann ich das Cookie unter sehen, Response Cookies
wenn ich den Datenverkehr mithilfe der Registerkarte "Netzwerk" der Chrome-Entwicklertools überprüfe. Ich kann jedoch nicht sehen, dass auf der Registerkarte Anwendung unter ein Cookie gesetzt wird Storage/Cookies
. Ich sehe keine CORS-Fehler, daher gehe ich davon aus, dass mir etwas anderes fehlt.
Irgendwelche Vorschläge?
Update I:
Ich verwende das Anforderungsmodul in einer React-Redux-App, um eine Anforderung an einen /signin
Endpunkt auf dem Server zu senden. Für den Server benutze ich Express.
Express-Server:
res.cookie ('Token', 'xxx-xxx-xxx', {maxAge: 86400000, httpOnly: true, Domain: 'localhost: 3000'})
Anfrage im Browser:
request.post ({uri: '/ signin', json: {userName: 'userOne', Passwort: '123456'}}, (err, response, body) => { // Sachen tun })
Update II:
Ich setze Anforderungs- und Antwortheader jetzt wie verrückt und stelle sicher, dass sie sowohl in der Anforderung als auch in der Antwort vorhanden sind. Unten ist ein Screenshot. Beachten Sie die Header Access-Control-Allow-Credentials
, Access-Control-Allow-Headers
, Access-Control-Allow-Methods
und Access-Control-Allow-Origin
. Wenn ich mir das Problem ansehe , das ich bei Axios 'Github gefunden habe , habe ich den Eindruck, dass jetzt alle erforderlichen Header gesetzt sind. Trotzdem gibt es kein Glück ...