2017-08-08 8 views
2

Mein Problem ist: Browser speichert den Cookie nicht aus dem Header Set-Cookie.
Ich habe das Frontend (Angular2), das lokal auf meinem Desktop bereitgestellt wurde. Backend auf dem Staging-Server, so erfolgt die Interaktion über das CORS.

Was ich bin immer in der Anforderung mit dem Set-Cookie Header:Browser speichert keine Cookies

HTTP/1.1 200 OK 
Date: Tue, 08 Aug 2017 11:00:03 GMT 
Server: ..... 
Access-Control-Allow-Origin: http://localhost:4200 
Access-Control-Allow-Credentials: true 
Content-Type: application/json 
Content-Length: 39 
Set-Cookie: session=.........; Path=/ 
Keep-Alive: timeout=5, max=99 
Connection: Keep-Alive 

Ich schicke folgende Anfrage nach erhalte ich die Antwort oben:

GET /api/..... HTTP/1.1 
Host: ...{some url}... 
Connection: keep-alive 
Origin: http://localhost:4200 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36 
Content-Type: application/json 
Accept: application/json, text/plain, */* 
withCredentials: true 
Referer: http://localhost:4200/ 
Accept-Encoding: gzip, deflate 
Accept-Language: en-US,en;q=0.8,ru;q=0.6,uk;q=0.4 

Wie Sie sehen können Dort sind keine Kekse. Außerdem kann ich sie nicht in der externen App (Chrome-Addon), in der JS-Konsole und in der Webkonsole im Bereich Application sehen. Cookies werden also definitiv nicht vom Browser gespeichert.

Meine Frage ist: wo ist das Problem? Stimmt etwas nicht mit meinen Headern/was sonst noch, oder ist es das Backend-Problem mit den Headern? Wo kann das Problem sein?

Über die duplizierenden Antworten - wie Sie sehen können, versuchte ich die Antworten, die ich hier in den anderen Themen finden konnte, aber sie lösten mein Problem nicht.

Antwort

3

Versehentlich die Antwort gefunden. Diejenigen unter Ihnen, die das gleiche Problem bekommen, überprüfen Sie, ob Sie Header auf die richtige Weise definieren.
Der Grund ist der withCredentials Header und seine Definition innerhalb der Angular. Um es richtig einzustellen, sollten Sie es folgendermaßen tun:

Alles sollte mit dieser Syntax in Ordnung sein.

0

Kann in http.method ... setzen gerade sein

this.http.get(url, { withCredentials: true }); 
Verwandte Themen