java中Cookie被禁用后Session追踪问题
凉凉
楼主
发布于 2023-4-19 14:08:17
阅读 843
查看全部
一.效劳器端获取Session对象依赖于客户端携带的Cookie中的JSESSIONID数据。假设用户把阅读器的隐私级别调到最高,这时阅读器是不会接受Cookie、这样导致永远在效劳器端都拿不到的JSESSIONID信息。这样就导致效劳器端的Session使用不了。
Java针对Cookie禁用,给出理处置方案,仍然可以保证JSESSIONID的传输。
Java中给出了再所有的途径的后面拼接JSESSIONID信息。
在 Session1Servlet中,使用response.encodeURL(url) 对超链接途径拼接 session的唯一标识- // 当点击 的时候跳转到 session2
- response.setContentType("text/html;charset=utf-8");
- //此方法会在途径后面自动拼接sessionId
- String path = response.encodeURL("/day11/session2");
- System.out.println(path);
- //页面输出
- response.getWriter().println("ip地址保管胜利,想看 请<a href='" + path + "'>点击</a>");
复制代码 二.在response对象中的提供的encodeURL方法它只能对页面上的超链接或者是form表单中的action中的途径停止重写(拼接JSESSIONID)。
假设我们使用的重定向技术,这时必需使用下面方法完成:其实就是在途径后面拼接了 Session的唯一标识 JSESSIONID。- // 重定向到session2
- String path = response.encodeRedirectURL("/day11/session2");
- System.out.println("重定向编码后的途径:" + path);
- response.sendRedirect(path);
- session2代码,获得session1传过来的ID
- public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- // 需求:从session容器中取出ip
- // 获得session对象
- HttpSession session = request.getSession();
- // 获取ip地址
- String ip = (String) session.getAttribute("ip");
- // 将ip打印到阅读器中
- response.setContentType("text/html;charset=utf-8");
- response.getWriter().println("IP:" + ip);
- }
- session1代码
- public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- // 需求:将ip保管到session中
- // 获取session
- HttpSession session = request.getSession();
- // 获得ip
- String ip = request.getRemoteAddr();
- // 将ip保管到session中
- session.setAttribute("ip", ip);
- // 需求2:手动的将 session对应的cookie耐久化,关闭阅读器再次访问session中的数据仍然存在
- // 创建cookie
- Cookie cookie = new Cookie("JSESSIONID", session.getId());
- // 设置cookie的最大生存时间
- cookie.setMaxAge(60 * 30);
- // 设置有效途径
- cookie.setPath("/");
- // 发送cookie
- response.addCookie(cookie);
- // 当点击 的时候跳转到 session2
- // response.setContentType("text/html;charset=utf-8");
- // String path = response.encodeURL("/day11/session2");
- // System.out.println(path);
- // response.getWriter().println("ip地址保管胜利,想看 请<a href='" + path + "'>点击</a>");
- // 重定向到session2
- String path = response.encodeRedirectURL("/day11/session2");
- System.out.println("重定向编码后的途径:" + path);
- response.sendRedirect(path);
- }
复制代码 以上所述是小编给大家介绍的java中Cookie被禁用后Session追踪问题,希望对大家有所协助,假设大家有任何疑问欢送给我留言,小编会及时回复大家的! |
|
|
|
|