首先,我读过" 如何使用Spring MVC处理HTTP OPTIONS? "但答案似乎并不直接适用于Spring Boot.
看起来我应该这样做:
通过将其设置为
dispatchOptionsRequest来配置dispatcherServlettrue
但是如何做到这一点,因为我没有XML配置,或者DispatcherServlet我的代码中有任何类型的初始化器类(这个答案提到)?
在@RestController类中,我有一个这样的方法,目前不会被调用.
@RequestMapping(value = "/foo", method = RequestMethod.OPTIONS)
public ResponseEntity options(HttpServletResponse response) {
log.info("OPTIONS /foo called");
response.setHeader("Allow", "HEAD,GET,PUT,OPTIONS");
return new ResponseEntity(HttpStatus.OK);
}
Run Code Online (Sandbox Code Playgroud)
Spring Boot 1.2.7.RELEASE; 一个简单的设置与Spring REST指南中的设置没有什么不同 .
根据void setRequestMethod (String method)这里的文件:
允许的方法仅限于:
我有一个服务器提供对消息列表的访问,我有一个选项是检索下一条消息:
NEXT /api/1/message
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将NEXT方法放在JavaScript HttpURLConnection中时,我收到一个错误:
E/MsgProcessingService:处理消息时失败:java.net.ProtocolException:未知方法'NEXT'; 必须是[OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE]之一
是否存在绕过该方法限制的非黑客方式?
显然,我可以在我的服务器上创建一个新的访问点,但我希望我不必这样做......
GET /api/1/message/next
Run Code Online (Sandbox Code Playgroud)