【发布时间】:2017-11-07 08:36:39
【问题描述】:
我正在使用 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 无法加载 http://ip:port/admin/organizations。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'http://localhost:3000' 不允许访问。响应的 HTTP 状态代码为 500。}
如何在 Spring 5 路由器功能中允许 CORS?
【问题讨论】:
-
您可以使用
.OPTIONS而不仅仅是.GET,因为 CORS 的工作原理是先发送选项请求以获取具有权限的标头。 -
@MartinBarker - 不起作用“XMLHttpRequest 无法加载 ip:port/admin/organizations。对预检请求的响应未通过访问控制检查:没有“Access-Control-Allow-Origin”标头出现在请求的资源。因此不允许访问源“localhost:3000”。响应的 HTTP 状态代码为 500。”
-
所以你有一个代码错误阻止它响应选项请求使用类似 ARC 插件的 Chrome 插件并以这种方式调试它看看你的服务器发回什么错误如果可以的话,如果没有打开在您的服务器上记录错误并进行日志拖网
标签: angular spring spring-webflux spring-restcontroller