缺少[java.lang.String]类型的标题'Authorization'

时间:2011-06-16 07:02:41

标签: java spring

我有一个客户端应用程序,使用基本身份验证通过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]]

然而,我有点希望凭证字符串只是空的。如果没有发送授权标头条目,如何停止发生错误并仅收到空白字符串?

1 个答案:

答案 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不会将请求映射到处理程序。通过使其成为可选项,您的处理程序将在您希望时调用(即,无论标题是否存在)。