跨域

同源策略

同源指的是域名(或IP),协议,端口都相同,不同源的客户端脚本(javascript、ActionScript)在没明确授权的情况下,不能读写对方的资源。

同源的判定:

http://www.example.com/dir/page.html为例,以下表格指出了不同形式的链接是否与其同源:(原因里未申明不同的属性即说明其与例子里的原链接对应的属性相同)

链接

结果

原因

http:// www.example.com /dir/page2.html

同协议同域名同端口

http:// www.example.com /dir2/other.html

同协议同域名同端口

http://user:pwd@ www.example.com/dir2/other.html

同协议同域名同端口

http://www.example.com: 81/dir/other.html

端口不同

https://www.example.com/dir/other.html

协议不同端口不同

http:// en.example.com/dir/other.html

域名不同

http:// example.com/dir/other.html

域名不同(要求精确匹配)

http:// v2.www.example.com/dir/other.html

域名不同(要求精确匹配)

http://www.example.com: 80/dir/other.html

不确定

取决于浏览器的实现方式

 

跨域方法

主流方法:CORSJSONP、服务器中转

CORS

只要服务器实现了CROS接口就可以跨源通信

浏览器发现这次请求是一次跨域请求,就会在Header里加一个Origin字段

服务器同意后就会在response里增加返回三个Access字段,如果不同意就返回

一个正常的HTTP报文,这种错误无法识别,因为状态码可能是200.

JSONP

只支持GET请求

jsonp就是利用了拥有src这个属性的标签,例如<script>标签都有跨域能力。

在url里加上callback参数,告诉服务器将参数传入这个回调函数中。服务端就是凭借字符串就好了。

 

参考文章:

https://zhuanlan.zhihu.com/p/259202879?utm_source=qq&utm_medium=social&utm_oi=673208464701001728

http://www.ruanyifeng.com/blog/2016/04/cors.html

https://blog.youkuaiyun.com/hansexploration/article/details/80314948

https://segmentfault.com/a/1190000003710973

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值