我有一个客户端应用程序,使用基本身份验证通过REST类型调用与spring服务器通信。 控制器方法签名如下:
@RequestMapping(value = "/REST/clients", method = RequestMethod.POST)
protected ModelAndView postClients(@ModelAttribute("ClientsCommand") ClientsCommand cmd,
@RequestHeader("Authorization") String credentials) throws IOException {
...
}
我遇到的问题是,如果标题中没有授权,我会收到错误:
Missing header 'Authorization' of type [java.lang.String]]
然而,我有点希望凭证字符串只是空的。如果没有发送授权标头条目,如何停止发生错误并仅收到空白字符串?
答案 0 :(得分:7)
尝试在required=false
上切换@RequestHeader
。
@RequestMapping(value = "/REST/clients", method = RequestMethod.POST)
protected ModelAndView postClients(@ModelAttribute("ClientsCommand") ClientsCommand cmd,
@RequestHeader(value = "Authorization", required=false) String credentials) throws IOException {
...
}
当@RequestHeader
被配置为需要时,当标题不存在时,Spring不会将请求映射到处理程序。通过使其成为可选项,您的处理程序将在您希望时调用(即,无论标题是否存在)。