场景描述:Https下登录页面,首先验证码存入cookie,用户输入验证码然后与cookie中的验证码对比,但是在服务端获取不到cookie,request.getCookies()为null;
过程分析:
查找后发现如果将浏览器Cookie清空,可以获取Cookie,于是用工具查看cookie的信息,发现maxage失效,原因分析:第一次产生cookie是在https下,第二次由http-https后,cookie跨域了,maxAge失效
解决方案:在产生cookie的代码中始终new Cookie;
即在创建cookie的代码中去除判空,原先:
if(iCookie==null){
iCookie = new Cookie("captcha", cookieValue);
}else {
iCookie.setValue(cookieValue);
}
改为:
iCookie = new Cookie("captcha", cookieValue);