【发布时间】:2014-08-16 03:07:38
【问题描述】:
我正在使用 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 参数打开。
【问题讨论】:
-
你试过Tomcat的CORS过滤器吗?
-
没有。该问题在下一版本的 SDR 中得到修复。我们只是使用反向代理将请求映射到相同的域和端口。
标签: spring cors spring-data-rest http-options-method