浏览器不保存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 });