java-Spring MVC中请求标头为null
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-Spring MVC中请求标头为null,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2550字,纯文字阅读大概需要4分钟。
内容图文
![java-Spring MVC中请求标头为null](/upload/InfoBanner/zyjiaocheng/665/5ce9dc4d86094b0d9c99a44f395685ec.jpg)
我的控制器中有两种映射方法.一个正在重定向到另一个.
重定向之前,我设置了一个标题作为响应.但是我得到的请求标头为空.
这些是我在控制器中的方法.两者都在同一个控制器中.
@RequestMapping(value="/testStart", method=RequestMethod.POST)
public String testStart(HttpServletRequest request, HttpServletResponse response){
String token = "126712810-1289291":
response.addHeader("authToken", token);
return "redirect:/test";
}
@RequestMapping(value="/test", method={ RequestMethod.POST, RequestMethod.GET })
public String getTestPage(Model model, HttpServletRequest request, HttpServletResponse response){
String token = request.getHeader("authToken");
System.out.println(token); //prints null
model.addAttribute("Testtoken", token);
System.out.println("Test page about to load ..");
return "test";
}
我正在使用邮递员客户端来测试此api.它正在击中URL并重定向到其他URL.但标头为空.
我不知道怎么了谁能帮我解决这个问题?谢谢
解决方法:
使用重定向方法,Web应用程序会告诉浏览器加载要重定向的页面.因此,这会导致来自浏览器的新http请求,此时无法访问原始请求.
因此,可以使用Forward方法解决您的问题. Web应用程序内部将所有请求数据转发到另一个处理程序方法
return "forward:/test";
此外,请更改您的
String token = request.getHeader("authToken");
与
String token = response.getHeader("authToken");
因为您将authToken添加到响应对象.(来自HttpServletResponse的注释-> getHeader(String name)自Servlet 3.0开始起作用)
编辑:
这段代码将为您提供完整的解决方案,“ / test”方法支持转发的reuqest,也支持来自浏览器的请求.
(您想从请求中获取令牌信息,因为您希望在不转发的情况下调用/ test方法,因此它可以这种方式工作,但是在转发时,您无法添加标头,因此您尝试添加响应并从请求中获取它,但这是行不通的这样,您需要根据调度程序的类型解析令牌,因此请检查代码)
@RequestMapping(value="/testStart", method=RequestMethod.POST)
public String testStart(HttpServletRequest request, HttpServletResponse response){
String token = "126712810-1289291";
request.setAttribute("authToken", token);
return "forward:/test";
}
@RequestMapping(value="/test", method={ RequestMethod.POST, RequestMethod.GET })
public String getTestPage(Model model, HttpServletRequest request, HttpServletResponse response)
{
//-----------------
//resolving token
String token = null;
DispatcherType type = request.getDispatcherType();
if(type == DispatcherType.FORWARD)
{
token = (String) request.getAttribute("authToken");
}
else if(type == DispatcherType.REQUEST)
{
token = (String) request.getHeader("authToken");
}
//-----------------
System.out.println(token); //prints the value
model.addAttribute("Testtoken", token);
System.out.println("Test page about to load ..");
return "test";
}
内容总结
以上是互联网集市为您收集整理的java-Spring MVC中请求标头为null全部内容,希望文章能够帮你解决java-Spring MVC中请求标头为null所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。