面试可能会问的
1.token怎么储存
答:token取来后一般本地保存在sessionStorage或者localStorage中,在请求中保存在cookie或者请求头中,(如果保存在cookie中,每次请求浏览器自动携带,不需要我们手动写在代码里,但是存在安全隐患。),这里还可以加上,还保存在vuex中,因为vuex是基于内存的,在实际操作中,速度会比ls更快,因为ls是基于磁盘的,同时只要不刷新页面,vuex的优势是能一直体现出来的,之所以放到ls或者cookie中,是因为vuex会因为页面刷新而丢失数据,所以存放到本地实际上是为了实现token在vuex中的持久化存储。持久化存储的细节就两步,描述起来第一步就是存到vuex和ls/cookie中,然后在vuex的state的token数据初始化的时候判断ls和cookie中是否有值,有就取,无则将token置空。
2.post和get的区别
答:主要三大区别,分别是缓存的区别,传参时的区别还有请求头中的区别。
原文链接JS中 post和get的区别_js中get和post的区别-CSDN博客
(此处内容为摘抄)
缓存主要是针对url进行的,所以
get请求默认是有缓存的,因为随着携带的参数不同,url是不同的
post请求不会缓存
传参时的区别在于get的参数在url里面,post是将参数放到请求体里面(这里记住,是在请求体里面),get的参数一般不大于8k
请求头中,post请求会多出一行,叫Content-Type,如果没有这个,post请求不会生效。
3.跨域的出现以及解决办法
跨域的原因是浏览器的同源策略,不同协议,不同域名,不同端口都会导致跨域
(摘抄)
JSONP技术,CORS技术,同一域名下设置代理,HTML5的postMessage方法,WebSocket
请各位补充
工作中实际会遇到的坑
1.Content-Type引起的前端传输的数据后端收不到
post请求的时候,一般是因为后端需要的数据格式和前端传的不同
解决办法:
npm install qs
在项目中
import qs from 'qs'
然后就在需要的地方,将数据处理,qs.stringify(data)即可
原理太多,就不说了。
2.zip和rar格式的文件上传时如果写了if(Content-Type的值==='application/octet-stream之类的'),可能会被提示格式不对。
解决办法:
将判断条件改成判断文件后缀名if(文件名.
subString(文件名.lastIndexOf("."))+1) === "zip"substring得小写。