基础知识:
Cookie有三种形式:
1.https only: 当服务器从https协议redirect到http协议后,这样的cookie就会失效。
2.http only: 当服务器从http协议redirect到https协议后,这样的cookie就会失效。
3.http and https: 协议切换不会失效
标准J2ee的Session使用的Cookie名称是 JSESSIONID.
Tomcat/JBoss服务器在request.isSecure() == false的时候,建立的是第三种形式的JSESSIONID.
当然reques.isSecure() == true时,建立的是第一种形式的JSESSIONID.
AJP的Connect有两个参数:
secure 默认为false
schema 默认为http
在Apache使用proxy代理到ajp端口,AJP会收到你当前端口的信息,443/80
AJP构造出来的reqeust会根据这两个端口来设置request的secure值,如果是443,request.isSecure()就等于true.
注意:
在AJP收到的端口信息不为0的情况下,无论AJP的Connect配置的secure和schema是什么,他们都是无效的!
这个时候,一旦你的Session是在HTTPS下建立的,那么当你Redirect到HTTP端口,你的Session就会失效.
我不知道有什么方式让Apache发给AJP的端口值为0.所以目前的解决方案是443端口不进行AJP proxy,使用http proxy替代。
本文探讨了Cookie的不同形式及其在HTTPS和HTTP之间的切换时的行为,并详细解释了J2EE中的Session如何受到这些变化的影响。此外,还讨论了在使用Apache作为代理服务器时,如何通过配置避免因协议切换而导致的Session失效问题。
1364

被折叠的 条评论
为什么被折叠?



