1、什么是同源策略
了解同源策略首先得知道同源是什么意思,同源指的是协议、域名以及端口全部相同,这个时候我们才能说这两个页面同源(源自于同一样个根地址)。
然而同源策略相当于是浏览器的一个安全阀,两个非同源页面相互交替资源,用于隔离恶意文件的一种安全机制。例如接触非同源的dom或者向非同源地址发送Ajax请求等都不行。
2、什么是跨域
上面说了同源是协议域名端口都一致,而如果其中但凡有一个不一样就是跨域。其根本原因就是因为浏览的同源策略。
3、浏览器怎么实现跨域请求?
因为浏览器是允许发起跨域请求的,只是请求回来的数据都被同源策略这个安全门拦截了,无法被页面获取到而已。知道原理那就好办了,让它允许不就行了。现如今实现跨域请求主流的有2种分别是JSONP和CORS。(里面jsonp是没有好的方法而被迫想出来的临时方法)
1:JSONP
优点:兼容性好。
缺点:只能支持get请求。(通过script标签的src属性来实现跨域数据获取的)
注意:jsonp和Ajax之间没有一点关系,jsonp没用到XMLHttpRequest这个对象
2:CORS
优点:是‘w3c’标准,跨域Ajax请求根本解决方案,无论是get还是post都支持。
缺点:什么都好就是不兼容低版本浏览器。
4、axios
1:什么是axios?
一个专注于网络数据请求的库,相当于原生的XMLHttpRequest对象,axios更简单好用。
相对于jq,axios更加轻量化,只专注于网络数据请求。
2:用axios发起get请求
语法:
axios.get('url',{params:{/*参数*/}}).then(callback)
3:用axios发起post请求
语法:
axios.post('url',{/*参数*/}).then(callback)
4:直接使用axios发送请求
axios({
method:'请求类型',
url:‘请求的url地址’,
data:{/*post数据类型*/}
params:{/*get数据类型*/}
}).then(callback)
5、节流&防抖
1:节流:可以减少一段时间内事件触发的频率。一般用于鼠标连续不断的触发事件,只在单位时间内只触发一次
2:防抖:在频繁执行某一事件时,不会频繁执行回调,只会执行最后一次触发事件。可以有效减少请求次数,节约请求资源。