如何在路由器功能中允许CORS?

时间:2017-06-06 10:55:34

标签: spring angular cors spring-restcontroller spring-webflux

我正在使用Spring 5路由器功能构建一个Web应用程序休息控制器来映射请求。

@RestController
public class AdminRest {

public RouterFunction<ServerResponse> route() {
    return RouterFunctions
            .route(RequestPredicates.GET("/admin/organizations"), this::getOrganizations);
}
}

让Angular 4项目充当其余控制器的消费者。

public getOrganizations(): Observable<OrganizationsList> {
return this.http.get(this.getOrganizationsUrl)
  .map((res: Response) => res.json())
  .catch((error: any) => Observable.throw(error.json().error || 'Server error'));
 }

哪个返回此错误

  

XMLHttpRequest无法加载oh-my-zsh。 No&#39; Access-Control-Allow-Origin&#39;标头出现在请求的资源上。起源&#39; http://ip:port/admin/organizations&#39;因此不允许访问。响应的HTTP状态代码为500.}

如何在Spring 5路由器功能中允许CORS?

2 个答案:

答案 0 :(得分:0)

你可以注释为

@CrossOrigin(origins = "http://domain2.com", maxAge = 3600)

有关详细信息,请参阅Spring CORS documentation

答案 1 :(得分:0)

添加配置文件对我有用

@Configuration
@EnableWebFlux
public class CorsConfig implements WebFluxConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry corsRegistry) {
        corsRegistry.addMapping("/admin/organizations")
                .allowedOrigins("*")
                .allowedMethods("GET")
                .maxAge(3600);
    }
}