有一个页面需要免登陆访问,所以我让客户端访问一个地址,地址在拦截器时转向一个方法,方法中需要先用httpclient获得sessionid,redirectUrl是一个springmvc控制器的路径,指向一个模板jsp页面,这就是最终需要免登陆访问的页面在chrome调试看到,设定的cookie并没有带上,怎么回事?
HttpServletResponse.sendRedirect重定向与Cookie失效
重定向代码如下:
try{
CookiexReferCookie=newCookie("x-referer",xReferer+"_"+token);
CookiexChannelCookie=newCookie("x-channel",xChannel);
xReferCookie.setPath("/");
xChannelCookie.setPath("/");
xReferCookie.setDomain("xxxx.com");
xChannelCookie.setDomain("xxxx.com");
response.addCookie(xReferCookie);
response.addCookie(xChannelCookie);
response.sendRedirect(targetUrl);
}catch(IOExceptione){
log.error("跳转目标h5页面失败,targetUrl:[]",targetUrl);
returnnewResponseEntity("error",HttpStatus.INTERNAL_SERVER_ERROR);
}
1234567891011121314
#Cookie类型、创建方式及特性
注:Cookie的MaxAge单位为秒。
responsesendredirect内存Cookie:
由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。
硬盘Cookie:
保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的
MaxAge:该Cookie失效的时间,单位秒。如果为正数,则该Cookie在maxAge秒之后失效。如果为负数,该Cookie为临时Cookie,关闭浏览器即失效,浏览器也不会以任何形式保存该Cookie。如果为0,表示删除该Cookie。默认为–1
总之,responsesendredirect给大家简单的介绍了一些,希望大家多看看。