网站出现IE下无法自动登录的BUG,经查证,引起此BUG的原因有如下两点:
1、 通常使用的cookie分两个版本:
a) version 0 这个版本被所有浏览器所接受,但是不支持“()<>@,;:///”[]?={} /t”这些特殊符号。
b) varsion 1 这个版本,支持特殊符号,但是在IE浏览器下,TOMCAT服务器6.0.16及以下版本中,还不被Javax.servlet.http.Cookie包所支持。
2、 TOMCAT服务器版本:
a) TOMCAT服务器是6.0.16以上(不包含)版本,存储含有特殊符号的cookie值时,服务端会自动给cookie值加上双引号再发送给客户端进行存储,
以保证cookie值正常。
b) 当TOMCAT服务器是6.0.16及一下版本时,则不支持含有特殊符号的cookie值,这样的cookie存储在浏览器全部关闭就就会失效。
目前网站的测试环境跟线上环境,TOMCAT版本都是5.5,所以在IE下设置cookie值时,如果设置了version为1或者cookie中含有特殊符号,
则存储的cookie不管是否设置了失效时间,都会在浏览器关闭后自动失效。
建议:存储的cookie值,如果非要使用特殊符号,如进行某些特定的加密算法后出现了特殊符号,可以先进行一遍URLEncode再存储,使用的时候再URLDecode即可。
参考资料: