我正在使用 Spring Data REST 构建一个 RESTful API。到目前为止,我的这个 RESTful 服务的 HTML GUI 是由同一个 Tomcat 提供的,而且我对跨域请求没有任何问题。
现在我想从不同的服务器提供静态文件。这意味着 API 在另一个域/端口上。浏览器将发送 OPTIONS 请求以从服务器获取 Access-Control 标头。不幸的是,Spring Data REST 不处理那些 OPTIONS 请求,甚至返回 HTTP 500。
我尝试创建一个处理所有 OPTIONS 请求的自定义控制器
@Controller
@RequestMapping(value = "/**", method = RequestMethod.OPTIONS)
public class OptionsController {
@RequestMapping
public ResponseEntity options() {
return new ResponseEntity<Void>(HttpStatus.OK);
}
}
这适用于 OPTIONS,但随后所有其他请求(如 GET)都停止工作。
OPTIONS 请求通过 dispatchOptionsRequest 调度程序 servlet 参数打开。