如果有人在我的浏览器中禁用cookie,我该如何在java中进行会话?

gir*_*iri 7 java cookies jsp servlets

我想知道是否有人在我的浏览器中禁用了cookie,然后cookie不适用于我的浏览器,那么我该如何在java中进行会话.我正在为服务器端编程编写servlet.那我的会议如何运作?它如何识别用户?由于JSESSION ID存储在cookie中......

Zoo*_*ork 12

请参阅HttpServletResponse encodeURL()encodeRedirectURL().

如果浏览器不支持cookie,这些功能将适当地重写您的URL以包含会话信息.根据您正在使用的Java Web框架,可以自动调用这些函数(只要您使用框架的URL编写方法).

请注意,由于在链接中显示会话ID的安全性和缓存含义,这在所有情况下可能都不可取. 此页面在这个简短的空间中总结了比我更好的问题,并提供了一种禁用此功能的方法.


Bal*_*usC 5

您需要将jsessionidWeb应用程序中涉及的所有URL 附加到客户端应该调用的URL中.这包括重定向URL和JSP页面中的链接.

如果是重定向网址,则需要先使用HttpServletResponse#encodeRedirectURL():

response.sendRedirect(response.encodeRedirectURL("page.jsp"));
Run Code Online (Sandbox Code Playgroud)

对于JSP页面中的链接,您基本上需要首先传递这些URL HttpServletResponse#encodeURL().您可以帮助做到这一点JSTL的(刚落,JSTL-1.2.jar/WEB-INF)<c:url>标签,它会在幕后通过上述方法传递的网址:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
...
    <a href="<c:url value="page1.jsp" />">link1</a>
    <a href="<c:url value="page2.jsp" />">link2</a>
    ...
    <form action="<c:url value="servlet" />" method="post">
        ...
    </form>
Run Code Online (Sandbox Code Playgroud)