在Spring MVC *中进行HTTP 303重定向,无需在JSESSIONID *上添加任何弹簧配置

时间:2011-11-22 23:53:59

标签: java spring spring-mvc

当使用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中严格完成的解决方案。

1 个答案:

答案 0 :(得分:1)

您可以在disable-url-rewriting="true"中设置<http>。 但是,如果此属性设置为true,则客户端必须使用cookie。