Java 会话Cookies和IE 8
我最近构建了一个部署在Tomcat上的简单web应用程序。该应用程序使用了相当标准的基于会话的安全性,其中已登录的用户将获得一个会话 会话在Firefox和Chrome中工作正常,但需要在IE的URL中使用jsessionid(测试7和8),设置为中等隐私。在IE8中,我试图覆盖cookie处理,设置“允许所有第三方cookie”和“允许所有会话cookie”-无骰子。然而,当我在本地机器上运行Tomcat时,IE接受cookie,会话工作正常 现在,对于HTTP头 从Chrome,登录用户可以获得一个会话Java 会话Cookies和IE 8,java,internet-explorer,tomcat,sessionid,Java,Internet Explorer,Tomcat,Sessionid,我最近构建了一个部署在Tomcat上的简单web应用程序。该应用程序使用了相当标准的基于会话的安全性,其中已登录的用户将获得一个会话 会话在Firefox和Chrome中工作正常,但需要在IE的URL中使用jsessionid(测试7和8),设置为中等隐私。在IE8中,我试图覆盖cookie处理,设置“允许所有第三方cookie”和“允许所有会话cookie”-无骰子。然而,当我在本地机器上运行Tomcat时,IE接受cookie,会话工作正常 现在,对于HTTP头 从Chrome,登录用户可以
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会话,所以我真的很惊讶到目前为止我还没有找到其他有同样问题的人。有人有什么想法吗
2010年4月3日编辑-
对不起,如果我没有说清楚的话,我已经试过了,从大厅里的其他多个IE同事的例子中,等等
2010年4月3日编辑-
我还尝试打开所有cookie的提示,但没有得到提示。使用Fiddler在“Set Cookie”标题中设置域也没有什么区别。这显然与Tomcat无关,因为Cookie正在设置中-只是IE不接受。这一定是IE中的安全问题。
可能会有助于调整它。您检查过服务器时间是否正确了吗
我最近也遇到过类似的问题,就是不能正确地接受饼干。经过一番深思熟虑,结果证明这是因为服务器和客户机之间的时间差太大,IE拒绝接受cookie。不过,这是在Apache中实现的。尝试使用标准HTTP端口(80)。我不止一次读到关于IE中隐私/安全的URL端口号问题,但目前似乎找不到相关链接。dev1站点属于哪个安全区域?IE根据哪个区域(以及该区域的配置方式)不同地处理cookie和许多其他安全性 例如,尝试将dev1站点显式设置为受信任站点的一部分,看看会发生什么 分区:
Internet
Local Intranet
Trusted Sites
Restricted Sites
此外,cookie是否必须限制在/测试路径?试着为/设置它,看看这是否有区别。我会尝试使用服务器的完全限定主机名。MSIE将没有域的主机名视为位于“本地intranet”中,并以不同的方式处理安全性 具体而言,不是:
http://devl:8080/testing/
尝试使用以下方法:
http://devl.mydomain.com:8080/testing/
我同意Lexicore的观点——web服务器上的cookie协议看起来是正确的,因此IE也有一些东西。如果我们能更好地理解IE拒绝cookie的原因,就更容易找到解决问题的方法。或者,请朋友在IE中为您访问该站点,以帮助确认这是服务器问题,而不是浏览器实例问题 这里有一些东西要检查,以帮助调试IE和cookies-不幸的是,有一大堆选项要检查。抱歉,如果这些项目中有一些看起来是基本的-我只是不想做任何假设。为此,我将在IE 8.0中进行跟踪 首先,浏览到IE中的目标站点(),然后:
setcookie($name,$value,time()+1200);
setcookie($name,$value,time()+120000);