Sur*_*ras 7 api rest cors angular
我在客户端 - 服务器项目中努力实现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
那么,我是否需要每次都实现Cross-Origin?或者还有另一种方法可以实现吗?
是的,如果您正在开发 API 并希望将其公开并希望移动用户或其他网站消费者使用它,则您应该(*)
始终为任何网站设置 CORS。您可以在这里阅读更多信息:
https://spring.io/understanding/CORS(不再运行)
https://auth0.com/blog/cors-tutorial-a-guide-to-cross-origin-resource-sharing/
小智 5
出于安全考虑,浏览器强制执行同源策略,即在网页中运行的脚本(通常是 AJAX 调用)无法访问位于不同域中的另一个页面的数据。在某些情况下,这可能是限制性的。CORS(跨源资源共享)是大多数现代浏览器支持的 W3C 规范,用于指定何时允许跨源请求是安全的。
在 Spring boot 中,启用 CORS 就像添加 @CrossOrigin 注释一样简单。可以在方法级别添加此注释以仅启用该特定请求映射或在类级别启用整个控制器。
您可以通过向注释添加“origins”属性来列出要允许的域和端口。如果未指定,则默认情况下允许所有来源(出于安全原因最好避免这种情况)。
下面是在控制器级别为 example.com 域和端口 80 启用 CORS 的示例
@CrossOrigin(origins = "http://www.example.com:80")
@RestController
@RequestMapping("/yourmapping")
public class YourController {
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11165 次 |
最近记录: |