cookie覆盖问题

一、问题现象

最近在做手机触屏版的项目,部署完后发现一直让重复登录的问题,其中cookie中的JSESSIONID是不断变化的,也就是说发生了cookie覆盖的问题。


二、问题原因

由于触屏版通过调用pc端接口的方式获取数据的,而两者的域是相同的,只是端口不同,因此后者将前者的cookie覆盖了


三、问题解决

参考http://my.oschina.net/eastwmt/blog/151596


今天遇到个问题,登陆本系统,调用对方的一个链接(action),打开了一个新的浏览器窗口。然后回到我的网站,点击任何一个东西,都会回到登陆页面。

使用firefox看了下,在点击链接前和链接后的JSESSIONID是不同的

本页面:

cookie覆盖问题_第1张图片

调阅后的页面:

cookie覆盖问题_第2张图片

发现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所代替 

cookie覆盖问题_第3张图片

 后来发现必须在启动后才能修改server.xml,故将其配置写入context.xml

?
1
"DocW3" path="/DocW3" reloadable="true" source="org.eclipse.jst.jee.server:DocW3" sessionCookiePath="/DocW3" sessionCookieName="JSESSIONID1">

 如果没有指定的项目可以配为

?
1
<Context  sessionCookiePath="/" sessionCookieName="JSESSIONID1">


  直接将server.xml中的修改即可,发现有两个了

cookie覆盖问题_第4张图片




你可能感兴趣的:(前端,java,架构)