我遇到了奇怪的问题以及它们如何在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不发送回来?它丢失了还是有一些我可以玩的设置?我感谢任何帮助 - 很高兴甚至重现......
答案 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,但这就是它的工作原理......