最近在做项目的过程中遇到了一个session id相关的问题,场景是这样的:
服务器端向客户端提供了一个登录接口,有用户名,密码,还有验证码。验证码实际上是一个JSP页面,代码如下:
- <%@page import="com.kunlunsoft.jn.action.login.LoginVerifyAction"%>
- <%@page import="com.kunlunsoft.jn.utils.VerifyCodeUtil"%>
- <%@ page language="java" contentType="text/html; charset=GBK"
- pageEncoding="GBK"%>
- <%
- String verifyCode = VerifyCodeUtil.createColor(request, response);
- session.setAttribute("VERIFYCODE", verifyCode);
- out.clear();
- out = pageContext.pushBody();
- %>
在上述JSP页面中,把验证码存储到session中,校验时就从session获取校验码,和客户端上送的校验码进行比较。现在出现一个问题是,从session中获取不到校验码,因为JSP和后台不是同一个session,怎么办呢?
我的方法是使用url重写,如:
http://localhost:8084/ICServer/verifycode.jsp;jsessionid=846BE41ACE68E5F553DF5D9EF331267B
但是这也不好使,因为浏览器会从cookie中去sessionid然后上送到服务器。所以,我禁用了浏览器的cookie就ok了
禁用cookie之后,url中指定的sessionid就生效了