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请求
什么是跨域和解决跨域的方法
于 2023-07-24 10:25:54 首次发布