Spring 3.0 HEAD请求
最近,我们转移到spring 3.0 Controller处理如下:
@Controllerpublic class MyController {
@RequestMapping(method = RequestMethod.POST)
protected String onSubmit ( Form form, Errors errors) {
// handle POST
}
@RequestMapping(method = RequestMethod.GET)
protected void getForm ( Form form ) {
// handle GET
}
}
现在,由于HEAD请求,我们的日志中出现了许多异常。
org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'HEAD' not supported at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodResolver.resolveHandlerMethod(AnnotationMethodHandlerAdapter.java:621)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:422)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:415)
...
我想像GET Requests一样支持HEAD Requests,但是当然要遵循HTTP参考:
HEAD方法与GET相同,除了服务器
在响应中不得返回消息正文。响应HEAD请求的HTTP标头中包含的元信息应该与响应GET请求发送的信息相同。此方法可用于获取有关请求所隐含的实体的元信息,而无需转移实体主体本身。此方法通常用于测试超文本链接的有效性,可访问性和最新修改。
http://www.ietf.org/rfc/rfc2616.txt
有没有人有一个优雅的解决方案,或者甚至有一个现成的弹簧解决方案?
我在网上搜索,但没有找到任何答案。
回答:
在当前的Spring(4.3.10)中,自动支持HEAD:
映射到“ GET”的@RequestMapping方法也隐式映射到“ HEAD”,即无需显式声明“ HEAD”。像处理HTTP GET一样处理HTTP
HEAD请求,除了只写字节数并设置“ Content-Length”标头,而不是写正文。
https://docs.spring.io/spring/docs/current/spring-framework-
reference/web.html#mvc-ann-requestmapping-head-
options
以上是 Spring 3.0 HEAD请求 的全部内容, 来源链接: utcz.com/qa/413014.html