我已经创建了一个基于简单 JSP-Servlet 的 Java Web 应用程序。我有一台具有静态 IP 的专用服务器(例如 ip - 102.30.101.5)。 IIS 在端口 8080 上运行,在端口 9090 上运行 Apache Tomcat。我已经在端口 9090 (Apache Tomcat) 上部署了我的网络应用程序 (demoapp)。 我有一个域(示例域 - example.com 或 www.example.com),使用 A-Field 将此域重定向到我的静态 IP,即 www.example.com 到 102.30.101.5
在 IIS 中,我已经配置(IIS 中的 URL 重写选项)传入 URL 请求,如果 www.example.com 是传入请求,则将其重定向到运行我的 Web 应用程序(Apache Tomcat)的端口 9090。
做完这一切后,我遇到了一个大问题。
当我使用 IP(即 102.30.101.5:9090/demoapp)访问我的应用程序时,它工作正常。 但是当我通过 www.example.com 访问时,对于每个请求,都会创建新的 sessionid。 前任。对于同一个浏览器,它在每个请求上创建不同的 sessionid。 因此,我无法维护登录用户的 session 。 它还影响搜索引擎优化。
我猜,它的重定向问题,但完全不知道是什么问题。
请尽快帮忙。
谢谢。
最佳答案
我假设您的 session 是通过 cookie 维护的。 cookie 始终限于特定的主机名 - IP 地址可以作为完全不同的主机名。每当您更改主机名时,完全可以预期会丢失 session ,因为这就是 cookie(最常用的 session 标识符存储)的工作方式。
有一种方法可以将 session 标识符添加到 URL,但是如果您链接到外部服务器,这很容易导致 session 出现在外部服务器的日志中,因此这是一个潜在的 session 泄漏,除非您绝对 知道自己在做什么。
您应该以这样的方式配置您的重定向,即只要有人通过意外的主机名或只是 IP 地址联系您的服务器,在创建 session 之前,它就会重定向。
关于apache - 域重定向后在基于 Jsp-Servlet 的应用程序中丢失 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36640699/