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
的存在
使用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
的存在