浏览器禁用cookie时管理会话

时间:2009-11-25 10:24:32

标签: java jsp session servlets

我想知道如果客户端浏览器已禁用cookie功能,我该如何管理会话..

如果我想在简单的JSP - Servlet中实现它,那么我该怎么做呢?

提前致谢...

4 个答案:

答案 0 :(得分:3)

没有Cookie,您有两种选择。第一个是通过Url传递sessionId。这需要在服务器上进行大量工作,因为您发回的每个URL都必须附加一个sessionId(通常以查询字符串参数的形式)。例如:

/路径/到/页

变为

/路径/到/页?的sessionid = ASDFG-ASDFG-ASDFG-ASDFG-ASDFG

您拥有的另一个选择是将您通过http获得的信息组合成“唯一”密钥并创建自己的会话桶。通过组合Http UserAgent,RemoteIp和RemoteXfip,您可以接近唯一地识别用户,但不能保证此密钥是100%唯一的。

答案 1 :(得分:2)

答案 2 :(得分:2)

必须使用response.encodeURL("page.jsp")

对每个网址进行编码

这会将会话ID添加到每个URL的末尾,因此不必启用cookie。

请注意,您必须手动为每个网址执行此操作才能使其正常工作。

有关详细信息,请参阅this link

答案 3 :(得分:2)

在JSP方面,您可以使用JSTL<c:url>进行此操作。

<a href="<c:url value="page.jsp" />">link</a>

很容易。当禁用cookie时,它会自动附加jsessionid

在Servlet端,您需要HttpServletResponse#encodeURL()或者通常是Servlet内的首选 - HttpServletResponse#encodeRedirectURL()

response.sendRedirect(response.encodeRedirectURL("page.jsp"));