SpringBoot处理CORS问题

1.什么是CORS

Cross-origin resource sharing,缩写:CORS ,
俗称:跨域资源共享,
表现症状:Access to XMLHttpRequest at ‘http://172.21.202.120:8080/chart’ from origin ‘http://localhost:8080’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
是一种用于让网页的受限资源能够被其他域名的页面访问的一种机制。说白了CORS就是一种桥接机制,用作网页间的受限资源访问。网页资源为啥会受限呢?是因为浏览器的同源策略,众所周知http是无状态协议,是不安全的。浏览器为了保证安全性,阻隔恶意文档,减少可能被攻击的媒介。于是便设计了同源策略,用于限制一个源的文档或者它加载的脚本如何能与另一个源的资源进行交互。 例如,XMLHttpRequest和Fetch API遵循同源策略。 这意味着使用这些API的Web应用程序只能从加载应用程序的同一个域请求HTTP资源,除非响应报文包含了正确CORS响应头。就像这样:
CORS
一个源(Origin)包含了协议,地址,端口源组 就像这样一个源http://eqxiu.chart.com/dir/page.html
这里举一些与这个源,同源或非同源的例子如下:

URL 结果 原因
http://eqxiu.chart.com/dir2/other.html 同源 只有路径不同
http://eqxiu.chart.com/dir/inner/another.html 同源 只有路径不同
https://eqxiu.chart.com/secure.html 不同源 协议不同
http://eqxiu.chart.com:81/dir/etc.html 不同源 端口不同,默认端口是80
http://other.company.com/dir/other.html 不同源 主机不同

问题和原因都找到了,现在就该回到具体业务场景来解决问题了,思路基本就是在response头中加入CORS允许的控制。参考Spring的官方文档有如下两种解决方案:https://spring.io/guides/gs/rest-service-cors/#global-cors-configuration

2.SpringBoot处理CORS的方式

2.1 @CrossOrigin注解的方式

这种方式粒度更小:对需要跨域请求的接口@RequestMapping前加上一个@CrossOrigin解并配置参数即可,就像这样@CrossOrigin(origins = “http://

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值