【发布时间】:2017-07-27 21:35:21
【问题描述】:
我有一个使用 Angular 2 和 Spring Boot 开发的 Web 应用程序。我使用 spring-boot-data-rest 依赖项将我的存储库公开为 HTTP 端点。
在开发过程中,我在运行在端口 8080 上的本地 tomcat 上运行我的后端 spring boot 项目。为了开发前端,我使用 angular-cli 在端口 4200 上为我的 Angular 2 应用程序提供服务。我在 4200 上运行的前端需要能够访问 8080 上暴露的端点,但这不起作用,因为:
请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin 'http://localhost:4200' 因此不允许访问。
如果这些是我手动输入 @RestController 的自定义端点,我可以简单地添加 @CrossOrigin 注释:
@RestController
public class MyController {
@CrossOrigin(origins = "http://localhost:4200")
@RequestMapping(value = "/whatever")
public void whatever() {
//whatever
}
}
但是对于spring-boot-data-rest 暴露的端点,我显然不能这样做。那么,如何使这些端点可以从 http://localhost:4200 源访问?
【问题讨论】:
-
我最近遇到了这个问题;如果您使用的是最新版本的 Spring Data,一切都会好起来的 (stackoverflow.com/a/42403956/4922375),否则,您必须自己编写一个过滤器,为每个响应设置一些标头。
标签: java spring spring-boot spring-data-rest