Spring MVC重定向与自定义HTTP头
Spring MVC重定向与自定义HTTP头
我正在开发一个小的Spring MVC应用程序,用户需要通过一些HTTP头信息被重定向到外部应用程序。例如,用户在URLhttp://localhost:8080/app1上的应用程序1上。在这个应用程序上,我们有一个简单的JSP页面,里面有一些表单,用户填写完毕后,我们需要在表单提交时收集这些数据,并将用户重定向到另一个外部应用程序的URL,比如http://localhost:9090/app2。
现在当重定向发生时,我们需要保持或添加HTTP头。由于重定向是浏览器发起的全新请求,所以在重定向之前添加的头信息丢失了。
以下是在重定向到app2之前在app1中添加头信息的示例代码:
response.addHeader("userId","test"); response.sendRedirect("http://localhost:9090/app2");
当我检查浏览器开发者工具时,我发现它在进入app2时没有头信息。有人能告诉我如何解决这个问题吗?
问题出现的原因是,当使用Spring MVC进行重定向时,自定义的HTTP头部信息不会被转发。
解决方法是将这些数据存储到cookie中,这样就能确保在重定向时携带这些自定义的HTTP头部信息。另外一种方法是将这些数据作为查询参数发送,但是由于查询参数的长度限制,使用HTTP头部信息似乎是更好的解决方案。
代码示例:
// 设置cookie Cookie cookie = new Cookie("headerName", "headerValue"); response.addCookie(cookie); // 重定向 response.sendRedirect("/newPage");
以上就是解决Spring MVC重定向时自定义HTTP头部信息不转发的方法。通过将数据存储到cookie中,或者作为查询参数发送,可以确保在重定向时携带自定义的HTTP头部信息。