Spring Data Rest和Cors
我正在开发一个带有Rest接口和dart前端的Spring Boot应用程序。
XMLHttpRequest确实执行一个完全正确处理的OPTIONS请求。在此之后,发出最终的GET(“/ products”)请求并失败:
请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许来源' http:// localhost:63343'访问。
经过一些调试后,我发现了以下内容:为RepositoryRestHandlerMapping之外的所有子类填充了AbstractHandlerMapping.corsConfiguration。在RepositoryRestHandlerMapping中,没有corsConfiguration在创建时存在/设置,因此它不会被识别为cors路径/资源。
=>没有连接CORS标头
这可能是问题吗?我怎么设置它?
配置类:
@Configurationpublic class RestConfiguration extends RepositoryRestMvcConfiguration { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**").allowCredentials(false).allowedOrigins("*").allowedMethods("PUT", "POST", "GET", "OPTIONS", "DELETE").exposedHeaders("Authorization", "Content-Type"); } ...}
我甚至尝试设置每个注释的Cors:
@CrossOrigin( methods = RequestMethod.GET, allowCredentials = "false")public interface ProductRepository extends CrudRepository<Product, String> {}
原始请求标头:
GET /products HTTP/1.1Host: localhost:8080Connection: keep-aliveCache-Control: max-age=0authorization: Basic dXNlcjpwYXNzd29yZA==User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/43.0.2357.130 Chrome/43.0.2357.130 Safari/537.36Content-Type: application/jsonAccept: */* Referer: http://localhost:63343/inventory-web/web/index.html Accept-Encoding: gzip, deflate, sdch Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
原始响应标头:
HTTP/1.1 200 OKServer: Apache-Coyote/1.1Content-Type: application/hal+json;charset=UTF-8Transfer-Encoding: chunkedDate: Thu, 30 Jul 2015 15:58:03 GMT
使用的版本:Spring Boot 1.3.0.M2 Spring 4.2.0.RC2
我错过了什么?
蓝山帝景
ITMISS