浏览器不保存cookies

问题描述:

我的问题是:浏览器不保存来自Set-Cookie标头的cookie。
我有我的桌面上本地部署的前端(Angular2)。后台在临时服务器上,所以交互在CORS上。

什么我得到的请求与Set-Cookie头:浏览器不保存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 

我要送我得到上面的答案后,以下请求:

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 

正如你所看到的,那里没有饼干。此外,我无法在外部应用程序(Chrome插件),JS控制台和Application部分中的Web控制台中看到它们。所以cookies绝对不会被浏览器保存。

我的问题是:问题在哪里?这是我的标题/其他任何错误,或者它是与标题的后端问题?问题在哪里?

关于复制答案 - 您可以看到,我尝试了在其他主题中找到的答案,但它们并未解决我的问题。

意外地找到了答案。那些会得到相同问题的人, 检查您是否以正确的方式定义标题。
原因是withCredentials标题和他在Angular中的定义。要正确设置它,您应该按照以下方式进行:

let options = new RequestOptions(); 
options.withCredentials = true; 

一切都应该罚款与此语法。

可以直接放进http.method ...

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