浏览器不会存储cookie

时间:2017-05-09 08:39:54

标签: angular http cookies setcookie httpcookie

我正在localhost:3000上运行一个角度4客户端,它正在与WEB API localhost:5000进行通信。我的问题是,当服务器指示浏览器执行此操作时,我无法弄清楚浏览器拒绝存储cookie的原因。

客户请求标题

Request URL:https://local.dev:5000/user/list?page=1&column=Email&listOrder=2
Request Method:POST
Status Code:200 OK
Remote Address:127.0.0.1:5000
Referrer Policy:no-referrer-when-downgrade
Accept:application/json
Accept-Encoding:gzip, deflate, br
Accept-Language:en-NZ,en-GB;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:no-cache
Connection:keep-alive
Content-Length:0
Content-Type:application/json
DNT:1
Host:local.dev:5000
Origin:https://localhost:3000
Pragma:no-cache
Referer:https://localhost:3000/user

服务器响应标头:

Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:https://localhost:3000
Cache-Control:no-cache
Content-Type:application/json; charset=utf-8
credentials:include
Date:Tue, 09 May 2017 08:22:25 GMT
Expires:-1
Pragma:no-cache
Server:Kestrel
Set-Cookie: <cookiename>=<somedata>; expires=Tue, 09 May 2017 09:22:23 GMT; domain=local.dev; path=/; secure; httponly
Transfer-Encoding:chunked
Vary:Origin
withCredentials:true

如您所见,CORS也已启用。 HTTPS用于传输。也尝试没有设置过期日期。 Cookie的域名设置为local.dev。我还尝试使用/localhost

之后Chrome的调试视图不会显示Cookie。只是一些默认的角度cookie。因此,我假设由于某种原因忽略了set-cookie标头。

chrome debug view. cookie not stored

HELP!

1 个答案:

答案 0 :(得分:1)

对于跨域AJAX请求,您需要明确指定Cookie应随请求一起发送,并在响应中接受。

这是使用XMLHttpRequest对象的withCredentials标志完成的。

在Angular中,您可以将其设置为$http服务的选项,另请参阅AngularJS withCredentials