日期:2014-05-19  浏览次数:20786 次

使用VPN访问系统,session为空
使用VPN访问系统后地址栏为
如:http://202.202.11.11/proxy/192.168.44.44/crm

页面代码
session.getAttribute("name")为空!



------解决方案--------------------
你的 VPN 为什么是通过 HTTP 去访问的?

我估计的原因是:

代理是通过 192.168.44.44 去访问服务端的,因此,在 session 生成时的客户端 Cookie 写入的域是 192.168.44.44。

HTTP 协议中 Cookie 值的发送不允许跨域!

也就是说,当前请求的地址是 202.202.11.11,那只能发送 202.202.11.11 域中 Cookie 的数据,是不能发送在 192.168.44.44 中数据的,而关键的 SessionID 数据写在了 192.168.44.44 域的 Cookie 下。

这种问题你只要使用 FireBug、HttpFox 等 Firefox 插件看一下生成 SessionID 的响应头就知道了。

可能有用的解决方案:

1:在你机器的 Hosts 文件中添加一行数据:
202.202.11.11 www.vpn.com

2:再到 202.202.11.11 的机器上(当然了,你要能在这台机器上修改)的 Hosts 中加一行
192.168.44.44 www.vpn.com

重启浏览器后,你通过 http://www.vpn.com/proxy/www.vpn.com/crm 访问理论上是可行的