Spring:我如何知道查询的来源?使用@RequestHeader(value =“User-Agent”)

时间:2017-08-03 23:08:29

标签: spring http spring-mvc httprequest user-agent

使用Spring,我想在@Controller中知道请求是否来自浏览器。如果是的话,那就进行特殊的治疗。我想过像这样使用@RequestHeader (value = "User-Agent")

    @RequestMapping(value = "/user-agent-test")
        public String hello(@RequestHeader(value="User-Agent") String userAgent)
             //toDo                  
             if(browser){
               //Make something 
             }else{
               // Make something else
             }
          return "home";
        }

但我不知道我必须提出什么条件。 提前谢谢你。

1 个答案:

答案 0 :(得分:3)

你实际上可以保证http-header" User-Agent"确保来自浏览器的 。这也可以是设置它的任何其他脚本/库/程序。相反,缺少标题并不表示浏览器。你将只是做一个有教养的猜测"。

无论如何,如果你仍然想要遵循你的方法,你也应该使用" required = false"在RequestHeader注释上,因此当未设置标头而不是完全失败时,参数为null。然后,您只需检查您的参数是否为空。

像这样:

@RequestMapping(value = "/user-agent-test")
public String hello(@RequestHeader(value="User-Agent", required=false) String userAgent)
   if (null != userAgent) {
      // could be a browser
   } else {
      // could be something else
   }
   return "home";

}

请参阅注释中的springs javadoc。 有关" User-Agent"的存在,请参阅此answer。头