加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

RESTful API是否需要随时进行CORS实施?

发布时间:2020-12-17 17:40:04 所属栏目:安全 来源:网络整理
导读:我在客户端 – 服务器项目中努力实现CORS. CORS表示只有在头部包含CORS值时才允许来自其他源(例如其他域)的调用. 因此,例如,如果我在www.domain.com上托管一个网站并在同一个域上调用RESTful API,那么一切都很好. 但是,如果我为移动应用程序开发API,则移动设
我在客户端 – 服务器项目中努力实现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?或者还有另一种方法可以实现吗?

解决方法

出于安全考虑,浏览器实施同源策略,即,在网页中运行的脚本(通常是AJAX调用)不能访问驻留在不同域中的另一页面的数据.在某些情况下,这可能是限制性的. CORS(跨源资源共享)是大多数现代浏览器支持的W3C规范,用于指定何时允许跨源请求是安全的.

在Spring引导中,启用CORS就像adding the @CrossOrigin annotation一样简单.可以在方法级别添加此注释,以便仅针对特定请求映射或在类级别启用整个控制器.

您可以通过向注释添加“origin”属性来列出允许的域和端口.如果未指定,则默认情况下允许所有原点(出于安全原因,最好避免这种情况).

下面是在控制器级别为example.com域和端口80启用CORS的示例

@CrossOrigin(origins = "http://www.example.com:80")
@RestController
@RequestMapping("/yourmapping")
public class YourController {

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读