Spring MVC 中的 HTTP 303 重定向 * 不附加 JSESSIONID * 并且不触及任何弹簧配置 [重复]

Posted

技术标签:

【中文标题】Spring MVC 中的 HTTP 303 重定向 * 不附加 JSESSIONID * 并且不触及任何弹簧配置 [重复]【英文标题】:HTTP 303 redirect in Spring MVC *without tacking on JSESSIONID* and without touching any spring config [duplicate] 【发布时间】:2012-01-04 08:29:49 【问题描述】:

当使用 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”。

我想要下面的代码,但我认为 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】:

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

【讨论】:

以上是关于Spring MVC 中的 HTTP 303 重定向 * 不附加 JSESSIONID * 并且不触及任何弹簧配置 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Spring MVC 和 JSR-303 休眠条件验证

带有 i18n 消息的 Spring-MVC + RESTeasy 表单 bean 验证 (JSR 303)

Spring MVC学习笔记——JSR303介绍及最佳实践

JSR-303 Bean Validation 介绍及 Spring MVC 服务端验证最佳实践

spring4 mvc 中使用 JSR-303 Validator ,国际化占位符问题至资源配置问题

http 301 302 303 307 308 傻傻分不清