在域重定向之后,在基于Jsp-Servlet的应用程序中丢失会话

时间:2016-04-15 07:21:11

标签: apache jsp tomcat servlets

我已经基于简单的JSP-Servlet创建了一个Java Web应用程序。我有一个带静态IP的专用服务器(例如ip - 102.30.101.5)。在端口8080上,IIS正在运行&在端口9090 Apache Tomcat正在运行。我在端口9090(Apache Tomcat)上部署了我的Web应用程序(demoapp)。 我有一个域(示例域 - example.com或www.example.com),使用A-Field将此域重定向到我的静态IP,即www.example.com到102.30.101.5

在IIS中,我已将传入的URL请求配置为(IIS中的URL重写选项),如果www.example.com是传入请求,则将其重定向到运行我的Web应用程序的端口9090(Apache Tomcat)。 / p>

完成所有这些后,我遇到了一个大问题。

当我使用IP(即102.30.101.5:9090/demoapp)访问我的应用程序时,它正常工作。 但是当我通过www.example.com访问时,对于每个请求,都会创建新的sessionid。 防爆。对于同一浏览器,它在每个请求上创建不同的sessionid。 因此,我无法维护日志记录用户的会话。 它也影响了搜索引擎优化。

我猜,它的重定向问题,但确切地说不知道是什么问题。

请尽快帮助。

谢谢。

1 个答案:

答案 0 :(得分:1)

我假设您的会话是通过cookie维护的。 Cookie始终限于特定主机名 - 并且IP地址有资格作为完全不同的主机名。每当您更改主机名时,都会完全放弃会话,因为这就是Cookie(最常用的会话标识符存储)的工作方式。

有一种方法可以将会话标识符添加到URL中,但是如果链接到外部服务器,则很容易出现在外部服务器日志中的会话,因此这是潜在的会话泄漏,除非你绝对

在创建会话之前,只要有人通过非预期的主机名或IP地址与您的服务器联系,您就应该重定向重定向。