什么是跨域和解决跨域的方法

1.同源策略
        要了解跨域就要先知道同源策略;同源策略是浏览器的一种约定,他是浏览器最核心也是最基本的安全功能,同源指的就是,同协议,同域名,同端口,
    同源策略的目的就是限制不同源的document或者脚本之间的相互访问,以免造成干扰和混乱。
2.为什么会有同源策略
        如果没有了同源策略,浏览器的一些正常功能可能都会受到影响,因为ajax是很灵活的,他可以发任何的请求,如果没有同源策略的限制,那么只要你构造好参数和请求路径你的请求想往哪发就往哪发,这样太不安全了,会导致各种数据泄露;有了同源策略,那就不能随意发送请求了。    
3.跨域的发生和解决方式
        当一个请求url的协议,域名,端口,三者之间任意一个与当前页面的url不同即为跨域;
        跨域的解决方式常见的有三种
        1.cros服务端操作:把当前请求地址加入可允许访问的header中  Access-Control-Allow-Oragin
        2.vue中的代理方式
                在vue中使用axios也可以配置跨域,在/config/index.js中将里面的target设置为我们要访问的域名。也就是后台ip地址。
                再把changeorigin:true,设置为true开启反向代理,在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样客户端和服务端进行数据的交互就不会有跨域问题
        最后pathRiwrite{'^/api':''}设置为空,这里理解成用'/api'代替target里面的地址
        3.jsonp是服务器与客户端跨源通信的方法。最大的特点就是简单适用,兼容性好,缺点是只支持get请求,不支持post请求;
                jsonp实现的原理:主要是利用动态创建script标签请求后端接口地址,然后传递callback参数,后端接收callback,后端再经过数据处理返回
                callback函数调用的形式,callback中的参数就是json;
                jsonp使用场景:在jquery的api接口中使用,dataType设置为jsonp,也可以在script标签中通 过src调用,需要传递callback回调函数
                还可以在vue-resource插件中`this.$http.jsonp('url',{}).then(res=>{})`
                ajax的核心是通过XMLHttpRequest获取非本页内容,jsonp的核心是通过script标签来调用服务器提供的js脚本;
                jsonp只支持get请求,而ajax支持get和post请求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值