【问题标题】:Session tracking using Httpsession Object if Cookies is disabled at browser如果在浏览器中禁用 Cookie,则使用 Httpsession 对象进行会话跟踪
【发布时间】:2015-12-17 02:15:14
【问题描述】:

如果 cookie 被禁用,我们如何管理会话对象?如何使用 url 编码?

【问题讨论】:

标签: java jsp


【解决方案1】:

servlet 容器将为您处理这个问题。如果您在第一次访问网站时查看 url,它将使用 URL 重写将 JSESSIONID 附加到 URL。

这是因为服务器第一次响应客户端时不知道客户端是否支持 cookie。它还写入了一个带有会话 id 的 cookie,因此在第二个请求中它会检查 cookie,如果存在则停止使用 URL 重写,如果不存在则继续。

【讨论】:

    【解决方案2】:

    您必须在响应对象中使用 encodeRedirectURL,请参考此博客,它将对您有所帮助。

    http://mytechbites.blogspot.com/2009/08/servlet-session-management-when-cookies.html

    【讨论】:

      【解决方案3】:

      它在 URL 末尾添加 jSessionId 以将请求与会话映射,您可能也需要为此配置服务器

      【讨论】:

        【解决方案4】:

        使用HttpServletResponse.encodeURL()jsessionid 附加到您的网址,但它被视为harmful

        【讨论】:

          【解决方案5】:

          Find more details here

          HTTP Sessions 是推荐的方法。会话标识在会话期间源自同一浏览器的请求。所有 servlet 可以共享同一个会话。 JSESSIONID 由服务器生成,可以通过 cookie、URL 重写(如果 cookie 关闭)或内置 SSL 机制传递给客户端。应该注意最小化存储在会话中的对象的大小,并且存储在会话中的对象应该是可序列化的。在 Java servlet 中,可以按如下方式获取会话:

          HttpSession 会话 = request.getSession(); //返回当前会话或新会话

          会话可以超时(在 web.xml 中配置)或手动失效。

          【讨论】:

            猜你喜欢
            • 2011-01-05
            • 2011-09-25
            • 2010-12-20
            • 1970-01-01
            • 2012-06-12
            • 2011-02-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多