重定向到不同页面时,Cookie在IE10中丢失

时间:2015-08-06 01:22:07

标签: javascript internet-explorer cookies

我遇到了奇怪的问题以及它们如何在IE10中运行。 当浏览器发送请求时,服务器返回以下响应:

HTTP/1.1 200 OK
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Set-Cookie: JSESSIONID-8180=z0jgejq0vz0n15ov6b0eh0lru;Path=/foo
Set-Cookie: csrfToken=078ac03d0b0f5f3b9b8158816d49dcadec9ed92b
Pragma: no-cache
Cache-Control: no-store
Cache-Control: no-cache
Content-Type: text/html; charset=utf-8
Content-Length: 83
Server: Jetty(6.1.23)

<script>window.location.href = "http://localhost:8080/foo/bar";</script>

然后浏览器被重定向到上面的URL。但是请求缺少从服务器获取的一个cookie(csrfToken):

GET http://localhost:8080/foo/bar HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Referer: http://localhost:8080/foo/bar/referer
Accept-Language: en-US
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
DNT: 1
Host: localhost:8180
Cookie: JSESSIONID-8180=z0jgejq0vz0n15ov6b0eh0lru

最糟糕的是 - 我无法在本地计算机上重现它 - 这些是我从客户端获取的日志。 Chrome和FF也可以正常使用。

为什么IE不发送回来?它丢失了还是有一些我可以玩的设置?我感谢任何帮助 - 很高兴甚至重现......

1 个答案:

答案 0 :(得分:1)

在这种情况下,你不能设置两次相同的标题:

Set-Cookie: JSESSIONID-8180=z0jgejq0vz0n15ov6b0eh0lru;Path=/foo
Set-Cookie: csrfToken=078ac03d0b0f5f3b9b8158816d49dcadec9ed92b

将其更改为:

Set-Cookie: JSESSIONID-8180=z0jgejq0vz0n15ov6b0eh0lru;Path=/foo,csrfToken=078ac03d0b0f5f3b9b8158816d49dcadec9ed92b;Path=/foo

它违反了当前的RFC,但这就是它的工作原理......