解决跨域最简单的方式

什么是跨域?

跨域:就是不同域之间进行相互资源请求;

例如:http://www.test.com/index.com  请求  http://www.test01.com/server.php

即进行不同的域名下的资源调用。

注意:域名对应的IP地址也算是跨域操作;例:127.0.0.1和localhost虽然对应,但在地址栏中算两个域。

 

为什么出现跨域? 

浏览器在解析JavaScript出于安全方面的考虑,只允许在同域名下页面进行相互资源请求调用,不允许调用其他域名下的页面的对象;简单的理解就是因为JavaScript同源策略的限制。

注意:跨域并不是请求发不出去,请求能发出去,服务器能收到请求并正常返回结果,只是结果被浏览器拦截了,所以页面无法正常使用数据。
 

什么是同源策略?

同源策略要求同源相同才能进行正常的资源交互,即要求当前页面与调用资源的协议、域名、子域名、端口完全一致,不一致则就是跨域。

 

常见跨域场景

 

URL                                      说明                    是否允许通信
http://www.demo.com/a.js
http://www.demo.com/b.js         同一域名,不同文件或路径           允许
http://www.demo.com/lab/c.js

http://www.demo.com:8000/a.js
http://www.demo.com/b.js         同一域名,不同端口                不允许
 
http://www.demo.com/a.js
https://www.demo.com/b.js        同一域名,不同协议                不允许
 
http://www.demo.com/a.js
http://127.0.0.1/b.js           域名和域名对应相同ip              不允许
 
http://www.demo.com/a.js
http://x.demo.com/b.js           主域相同,子域不同                不允许
http://demo.com/c.js
 
http://www.demo1.com/a.js
http://www.demo2.com/b.js        不同域名                         不允许


解决方式

有很多 我这里就不多说了,我说一个最简单的就是在后台的控制层加上一个注解就完事了。

@CrossOrigin

 

如有问题 欢迎留言。。。。。。。。。。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值