当我RequestMapping
在 Spring MVC 中配置我的 s 时,我想在使用Allow
该OPTIONS
方法时自动生成正确的标头。
例如,使用此控制器:
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping(method = RequestMethod.GET)
ResponseEntity<String> getTest() {
return new ResponseEntity<>("test", HttpStatus.OK);
}
}
现在,如果我OPTIONS
向该 URL 发出请求,我会得到 405,方法不允许。相反,我希望它自动响应
Allow: GET, OPTIONS
和204 - No content
我有一个想法,像这样添加一个拦截器:
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new HandlerInterceptor() {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if("OPTIONS".equalsIgnoreCase(request.getMethod())){
response.setHeader("Allow", "GET, OPTIONS");
response.setStatus(204);
//TODO figure out the @Controller and what possible methods exist
return false;
}
return true;
}
//Deleted excess methods for brevity
});
}
如果我没有编写自定义拦截器,这个功能是否存在?如果不是,我该如何解决并查找发生调用TODO
的同一 URL 上存在哪些注释?OPTIONS