【问题标题】:Losing session in Jsp-Servlet based application after domain redirection域重定向后在基于 Jsp-Servlet 的应用程序中丢失会话
【发布时间】:2016-04-15 07:21:11
【问题描述】:

我创建了一个基于简单 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)。

做了这一切之后,我遇到了一个大问题。

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

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

请尽快帮忙。

谢谢。

【问题讨论】:

    标签: apache jsp tomcat servlets


    【解决方案1】:

    我假设您的会话是通过 cookie 维护的。一个 cookie 总是被限制在一个特定的主机名上——而一个 IP 地址就相当于一个完全不同的主机名。每当您更改主机名时,完全可以预期会丢失会话,因为这就是 cookie(最常用的会话标识符存储)的工作方式。

    有一种方法可以将会话标识符添加到 URL,但是如果您链接到外部服务器,这很容易导致会话出现在外部服务器的日志中,因此这是一个潜在的会话泄漏,不推荐,除非您绝对 em> 知道你在做什么。

    您应该将重定向配置为每当有人通过非预期的主机名或仅通过 IP 地址联系您的服务器时,在创建会话之前重定向。

    【讨论】:

    • 谢谢@olaf-kock 先生,我也尝试了其他会话跟踪方法,但得到了相同的输出。
    • 只要有人来到标准主机名之外的另一个网站并且您已设置好,只需进行早期和即时重定向。不再需要摆弄和尝试其他技术。正如我上面所说:他们已经知道问题并且绝对知道这些问题是一个真实的前提条件。 “绝对”上的斜体是故意的。
    • 为迟到的回复道歉,但在 web.xml 中添加以下行后问题已关闭:true
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多