【问题标题】:Spring : How do I know where a query comes from? using @RequestHeader (value = "User-Agent")Spring:我怎么知道查询来自哪里?使用 @RequestHeader (value = "User-Agent")
【发布时间】:2017-08-03 23:08:28
【问题描述】:

使用 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";
        }

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

【问题讨论】:

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


【解决方案1】:

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

无论如何,如果您仍然想遵循您的方法,您还应该在 RequestHeader 注释上使用“required=false”,因此当未设置标头而不是完全失败时,该参数为 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”标头的存在

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-01
  • 2012-07-02
  • 2011-01-11
  • 2022-10-12
  • 1970-01-01
  • 2015-07-14
  • 1970-01-01
相关资源
最近更新 更多