【发布时间】:2017-05-09 05:40:48
【问题描述】:
我在客户端-服务器项目中为 CORS 实现而苦苦挣扎。 CORS 意味着,仅当标头包含 CORS 值时才允许来自其他来源(例如其他域)的调用。
因此,例如,如果我在 www.domain.com 上托管一个网站并在同一个域上调用一个 RESTful API,那么一切都很好。
但是,例如,如果我为移动应用程序开发 API,则移动设备没有相同的 API 域。这怎么可能一起工作?我是否每次都需要在我的服务中实现 CORS?
问题出现了,因为我开发了一个 Angular 2 应用程序,它在 localhost:4200 上的 dev 中运行,而我的 API 在 localhost:8080 上运行(使用 Spring Boot 构建)。所以客户端抛出异常,因为它不是同一个来源(不同的端口)。
目标是将我的 API 托管在互联网某处的根服务器上,并将客户端托管在不同的网络空间提供商上(因为它只是一个页面应用程序)。 api 使用http://1.2.3.4:8080/api/v1 运行,客户端使用http://www.example.com:80/myPage 运行
那么,我需要每次都实现跨域吗?还是有其他方法可以实现?
【问题讨论】:
-
是的,如果您在不同的域上运行 Angular 2 应用程序,则服务器需要支持 CORS。幸运的是,使用 Spring Boot 很容易:spring.io/guides/gs/rest-service-cors
-
@jonrsharpe 感谢您的链接!但为什么移动设备不是不同的来源?
-
@Surras 因为 CORS 是一种浏览器检查,所以您的手机没有使用浏览器来呈现您的应用,至少不是完整的。
-
@jonrsharpe 啊,解释一下 :) 谢谢!您能发布一个答案,以便我将其标记为答案吗?