一、问题现象
最近在做手机触屏版的项目,部署完后发现一直让重复登录的问题,其中cookie中的JSESSIONID是不断变化的,也就是说发生了cookie覆盖的问题。
二、问题原因
由于触屏版通过调用pc端接口的方式获取数据的,而两者的域是相同的,只是端口不同,因此后者将前者的cookie覆盖了
三、问题解决
参考http://my.oschina.net/eastwmt/blog/151596
今天遇到个问题,登陆本系统,调用对方的一个链接(action),打开了一个新的浏览器窗口。然后回到我的网站,点击任何一个东西,都会回到登陆页面。
使用firefox看了下,在点击链接前和链接后的JSESSIONID是不同的
本页面:
调阅后的页面:
发现JSESSIONID的值变化了,而有些意外的是调阅地址的域竟然也是168.88.100.42.经过以下博文的查阅
http://www.cnblogs.com/ibook360/archive/2011/12/15/2288666.html
http://blog.shilimin.com/338.htm
找到了问题解决方案,在tomcat7的配置文件server.xml中修改JSESSIONID的名字,来解决冲突。
1
|
< Engine
defaultHost = "localhost"
name = "Catalina" >< Context
docBase = "healthDocW3"
path = "/DocW3"
reloadable = "true"
source = "org.eclipse.jst.jee.server:DocW3"
sessionCookiePath = "/DocW3"
sessionCookieName = "JSESSIONID1" /></ Host ></ Engine >
|
效果如下,原来的JSESSIONID被JSESSIONID1所代替
后来发现必须在启动后才能修改server.xml,故将其配置写入context.xml
1
|
<Context docBase= "DocW3"
path= "/DocW3"
reloadable= "true"
source= "org.eclipse.jst.jee.server:DocW3"
sessionCookiePath= "/DocW3"
sessionCookieName= "JSESSIONID1" >
|
如果没有指定的项目可以配为
1
|
< Context
sessionCookiePath = "/"
sessionCookieName = "JSESSIONID1" >
|
直接将server.xml中的修改即可,发现有两个了