老师,我在设置cookie的时候已经存进去一个name了,为什么再次发一个请求的时候请求到的name是JSESSIONID而不是我设置的那个
来源:6-14 单点登录Redis存储Session及SessionId问题说明与集群实战-4
sj的程序之家
2018-02-07
/** * 读取cookie * @param request * @return */ public static String readLoginToken(HttpServletRequest request) { Cookie[] cookie = request.getCookies(); System.out.println(cookie[0].getValue()); if(cookie != null) { for(Cookie ck : cookie) { log.info("write cookieName:{}, cookieValue:{}", ck.getName(), ck.getValue()); if(StringUtils.equals(ck.getName(),COOKIE_NAME)){ log.info("return cookieName:{},cookieValue:{}",ck.getName(),ck.getValue()); return ck.getValue(); } } } return null; }
正常登录之后已经存进去了。
但是再次发请求就变成这样了
请求头中也只有这个JESSIONID而不是我自己设置的name值
4回答
-
Kokutou
2018-03-07
同样遇到过这个问题,搞了很长时间,最后发现,是我nginx的配置文件没写对造成的。
附上老师的配置文件截图
112018-03-11 -
Geely
2018-02-12
是这样的,查看cookie的地方从这里看。这个是火狐的,chrome也是一样的,课程里面有领着看。
同学看看这里能否查到你设置的cookie呢
然后第二个问题,那个没有关系,但是要保证反序列化的时候是这个对象,正确的就可以。
10 -
Geely
2018-02-09
你好,同学,我看你设置的是mmall_login_token 这期间是否有清空浏览器cookie呢?
改造成mmall_login_token之后,我们不再需要关心jsessionId,只要关注login_token即可。没有清空cookie的话,应该不会消失的除非你设置的cookie的有效期非常短,或者设置成0才会发生。
同学再检查一下看看~~
132018-02-09 -
sj的程序之家
提问者
2018-02-09
这个是我设置cookie的图
public static void writeLoginToken(HttpServletResponse response, String token) {
if(response == null) {
throw new ParamException("响应参数异常");
} else if (token == null) {
throw new ParamException("token错误");
}
Cookie cookie = new Cookie(COOKIE_NAME, token);
cookie.setDomain(COOKIE_DOMAIN);
/**
* 防止脚本攻击带来的信息泄露风险
* 这个属性规定不许通过脚本访问cookie
* 无法通过脚本获取cookie
* 浏览器不会将信息发送给任何第三方
*/
cookie.setHttpOnly(true);
/**
* 代表设置在根目录
* 例子:
* 比如设置为test,把么只有test文件夹下的才可以使用(生效)
*/
cookie.setPath("/");
/**
* 设置cookie的存活时间
* 如果设置成-1代表cookie永久存活
* 单位是秒
* 如果不设置,cookie不会写入硬盘,而是写在内存,只在当前页面有效
*/
cookie.setMaxAge(60 * 60 * 24 * 365);
log.info("write cookieName:{}, cookieValue:{}", cookie.getName(), cookie.getValue());
/**
* 把cookie放入响应中
*/
response.addCookie(cookie);
}012018-02-12
相似问题