当使用spring的RedirectView时,它调用encodeRedirectURL,它将JSESSIONID隐藏到URL中。我想在没有发生这种情况的情况下进行重定向。
现在,我有:
@RequestMapping(value = "/MyProfile")
public ModelAndView gotoMyProfile(HttpSession session) {
return new ModelAndView(new RedirectView("/profile?id="+userid));
}
这可以很好地将用户重定向到“/ profile?id = 4256”,但它在那里粘贴“; JSESSIONID = F3D5AE8AED0F”,所以我最终得到“/ profile; JSESSIONID = F3D5AE8AED0F?id = 4256”。< / p>
我想要下面的代码,但我不认为HttpServletResponse是RequestMapping的有效返回类型:
@RequestMapping(value = "/MyProfile")
public HttpServletResponse gotoMyProfile(HttpSession session, HttpServletResponse response) {
response.setStatus(303);
response.setHeader("Location", "/profile?id=" + userid);
return response;
}
编辑:感谢您的回答,但我无法访问Spring安全配置。这就是我尝试上面代码的原因。我要求一个可以在java中严格完成的解决方案。
答案 0 :(得分:1)
您可以在disable-url-rewriting="true"
中设置<http>
。
但是,如果此属性设置为true,则客户端必须使用cookie。