当前位置:  开发笔记 > 编程语言 > 正文

会话Cookie和IE 8

如何解决《会话Cookie和IE8》经验,为你挑选了2个好方法。

我最近构建了一个部署在Tomcat上的简单Web应用程序.该应用程序使用基于标准会话的安全性,其中已登录的用户被授予会话.

会话在Firefox和Chrome中运行良好,但需要在IE的URL(测试7和8)中使用jsessionid,设置为中等隐私.在IE 8中,我试图覆盖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会话,所以我真的很惊讶到目前为止我还没能找到其他有相同问题的人.有人有主意吗?

编辑4/3/2010 -

对不起,如果我没有说清楚 - 我已经试过IE的其他多个实例 - 大厅里的同事等等.

编辑4/3/2010 -

我也试过打开提示所有的cookie,但我没有得到提示.使用Fiddler在"Set-Cookie"标头中设置域也没有任何区别.



1> 小智..:

我遇到了这个确切的问题,挖了一会儿,发现了这个:

http://forums.iis.net/p/1147938/1879164.aspx

这表明在其中有下划线的域名会导致Windows Server,tomcat和IE出现问题

不确定这是否能解决你的问题(此时你可能并不在意)但也许下一个人可以从中获得一些价值.



2> 小智..:

问题:IE8拒绝接受我建立的网站上的cookie,但Firefox和IE7工作得很好并且已经这么做了很长时间 - 这是稳定的代码.

解决方案(对我来说):我的服务器与客户端计算机位于不同的时区.STUPID,IDIOTIC IE8试图变得聪明并且拒绝接受cookie(存储在本地客户端机器中),使用寿命为20分钟.我的PHP代码直接来自教科书,因此:

setcookie($name,$value,time()+1200);

但是,如果我将其更改为 - 例如 -

setcookie($name,$value,time()+120000);

这仍然让我在20分钟后让cookie死亡,但至少我的用户现在可以使用我的网站IE8.我传递这些信息,以防它可以帮助别人.

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有