我最近构建了一个部署在 Tomcat 上的简单网络应用程序。该应用程序使用非常标准的基于 session 的安全性,已登录的用户将获得一个 session 。
session 在 Firefox 和 Chrome 中运行良好,但需要在 IE 的 URL 中使用 jsessionid(测试 7 和 8),设置为中等隐私。在 IE 8 中,我试图覆盖 cookie 处理,设置“允许所有第 3 方 cookie”和“允许所有 session cookie”——没有骰子。但是,当我在本地计算机上运行 Tomcat 时,IE 接受 cookie,并且 session 工作正常。
现在,对于 HTTP header 。
在 Chrome 中,登录用户获得一个 session
GET http://devl:8080/testing/ HTTP/1.1
Host: devl:8080
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1036 Safari/532.5
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
P3P: CP="NON CURa ADMa DEVa TAIa OUR BUS IND UNI COM NAV INT STA"
Set-Cookie: JSESSIONID=9280023BCE2046F32B13C89130CBC397; Path=/testing
Content-Type: text/html;charset=UTF-8
Content-Language: en-US
Content-Length: 2450
Date: Fri, 26 Mar 2010 14:14:40 GMT
GET http://devl:8080/testing/logout HTTP/1.1
Host: devl:8080
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1036 Safari/532.5
Referer: http://devl:8080/testing/
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: JSESSIONID=9280023BCE2046F32B13C89130CBC397
...
从 IE 8 开始,具有标准的中级安全性和隐私性-
GET http://devl:8080/testing/ HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDC; Tablet PC 2.0)
UA-CPU: AMD64
Accept-Encoding: gzip, deflate
Host: devl:8080
Connection: Keep-Alive
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
P3P: CP="NON CURa ADMa DEVa TAIa OUR BUS IND UNI COM NAV INT STA"
Set-Cookie: JSESSIONID=192999F922D6E9C868314452726764BA; Path=/testing
Content-Type: text/html;charset=UTF-8
Content-Language: en-US
Content-Length: 2450
Date: Fri, 26 Mar 2010 14:32:34 GMT
GET http://devl:8080/testing/logout HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
Referer: http://devl:8080/testing/;jsessionid=6371A83EFE39A46997544F9146AA5CEA
Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDC; Tablet PC 2.0)
UA-CPU: AMD64
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: devl:8080
...
我认为它可能是 P3P,但在添加紧凑策略后,没有任何变化。这是标准的 Tomcat session ,所以我真的很惊讶到目前为止我还没有找到其他有同样问题的人。有人有什么想法吗?
编辑 2010 年 4 月 3 日 -
抱歉,如果我没有说清楚 - 我已经从多个其他 IE 实例中尝试过 - 大厅里的同事等。
编辑 2010 年 4 月 3 日 -
我也试过打开所有 cookie 的提示,但我没有收到提示。使用 Fiddler 在“Set-Cookie” header 中设置域也没有什么不同。
最佳答案
我遇到了这个确切的问题,挖了一会儿,发现了这个:
http://forums.iis.net/p/1147938/1879164.aspx
里面说带下划线的域名会导致Windows Server、tomcat和IE出现问题
不确定这是否能解决您的问题(此时,您可能不在乎)但也许下一个出现的人可以从中获得一些值(value)。
关于java - session Cookie 和 IE 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2524251/