Spring : 我怎么知道查询来自哪里?使用 @RequestHeader(值 = "User-Agent")

Spring : How do I know where a query comes from? using @RequestHeader (value = "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";
        }

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

你实际上可以保证http-header"User-Agent"的存在保证这个来自一个浏览器。这也可以是任何其他 script/library/program 设置。相反,缺少 header 并不表示它 不是 浏览器。你只会做一个 "educated guess".

无论如何,如果您仍想遵循您的方法,您还应该在 RequestHeader 注释上使用 "required=false",这样当未设置 header 时参数为 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。 另请参阅 answer 关于 "User-Agent" header

的存在