跨域问题解决方案

https://www.cnblogs.com/morethink/p/6525216.html

常用解决方案好文:https://blog.youkuaiyun.com/xiaozhu_dq/article/details/82423618

跨域的根源

源于浏览器的同源策略,跨域其实就是前端请求,域名、协议、端口,只要其中之一不同,就会有跨域限制。

下面这段引用其他博主的文章

http://www.123.com/index.html 调用 http://www.123.com/server.php (非跨域)

http://www.123.com/index.html 调用 http://www.456.com/server.php (主域名不同:123/456,跨域)

http://abc.123.com/index.html 调用 http://def.123.com/server.php (子域名不同:abc/def,跨域)

http://www.123.com:8080/index.html 调用 http://www.123.com:8081/server.php (端口不同:8080/8081,跨域)

http://www.123.com/index.html 调用 https://www.123.com/server.php (协议不同:http/https,跨域)
————————————————
版权声明:本文为优快云博主「gang456789」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/gang456789/article/details/78202778

 

解决跨域

1.jsonp

首先说下jsonp的原理。

有注意到标签属性src=“”,里面的地址不需要跨域吗,jsonp其实就是通过建立<script src="">标签,把需要跨域的url填进去,就可以访问到后端,因为这种形式最后是拿到一个js文件的,所以后端也需要对返回数据以特殊格式封装。

ps:由于src=""链接的方式归根到底是get请求,所以jsonp只能解决get请求的跨域问题。

下面是演进实现例子

ajax的形式

 

2.后端

@CrossOrigin(origins = "http://www.zhihu.com")

或者 response.setHeader("Access-Control-Allow-Origin", "*")

 

3.iframe之间交互,postMessage跨域

window.postMessage(一次只能传输255字符串)

 

 

4.设置document.domain

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值