apache - 域重定向后在基于 Jsp-Servlet 的应用程序中丢失 session

标签 apache jsp tomcat servlets

我已经创建了一个基于简单 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/

相关文章:

PHP $_COOKIE 未完全填充

java - 无法使用 apache common io 中的比较器解析方法排序

python - Django新手试图让treeio在apache后面工作

java - _jspService 超过了 65535 字节的限制

Apache 负载均衡器 : direct to specific application based on URL

android - 如何将 .war 文件部署到 WebSphere 8.5 服务器?

apache - 拒绝访问 .htaccess 中的一个特定文件夹

java - 如何更正 JSP 中的 servlet 映射?

java - 使用 Struts 2 标签将 java 方法的值传递给 javascript 变量

tomcat - Grails 3 和 Spring Security LDAP 未加密流量