Spring Data Rest and Cors
我正在开发一个带有Rest接口和飞镖的Spring Boot应用程序。
XMLHttpRequest确实执行了一个完全正确的选项请求。在此之后,将发出最终的 GET(“/产品”)请求并失败:
请求的资源上不存在“访问控制-允许-源”标头。因此,不允许访问源“http://localhost:63343”。
经过一些调试,我发现以下内容:为除 RepositoryRestHandlerMapping之外的所有子类填充了 AbstractHandlerMapping.corsConfiguration。在 RepositoryRestHandlerMapping 中,在创建时不存在/设置了 corsConfiguration,因此它不会被识别为 cors path/resource。
=> 没有附加 CORS 标头
这可能是问题所在吗?如何设置?
配置类:
@Configuration
public 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.1
Host: localhost:8080
Connection: keep-alive
Cache-Control: max-age=0
authorization: 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.36
Content-Type: application/json
Accept: */*
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 OK
Server: Apache-Coyote/1.1
Content-Type: application/hal+json;charset=UTF-8
Transfer-Encoding: chunked
Date: Thu, 30 Jul 2015 15:58:03 GMT
使用的版本: 弹簧靴 1.3.0.M2 弹簧 4.2.0.RC2
我错过了什么?