[https://www.baidu.com:8899#a](https://www.baidu.com:8899#a)
这个地址中包含 协议 、 域名 、 端口 、 哈希值 四个组成部分。(4分)- location中 search 属性可以获取地址中问号传参的部分(2分)
- 浏览器的缓存机制,分为 强 缓存和 协商 缓存(4分)
- 同源策略是哪三者保持一致(3分) 协议 、 域名 、 端口
- ajax全称是 async javascript and XML (2分)
let xhr = new XMLHttpRequest;
1)xhr.onreadystatechange是什么事件(2分)监听readyState状态变化
2)xhr.readyState有哪几个状态,每个状态都表示什么意思(10分)
- 0 UNSENT 创造出来xhr实例就是0
- 1 OPENED 执行open方法后就会由0变成1
- 2 HEADERS_RECEIVED 响应头信息已经返回
- 3 LOADING 响应主体信息正在处理
- 4 DONE 响应主体信息已经返回
3)如何给xhr实例设置请求头(2分)xhr.setRequestHeader([key],[value])
4)怎么给xhr实例设置请求体(2分)xhr.send([请求体])
5)如何获取某个响应头(2分)xhr.getResponseHeader([key])
6)如何获取全部响应头(2分)xhr.getAllResponseHeaders()
- get与post请求有什么区别(8分)
1.GET请求传递给服务器的信息,除了请求头传递以外,要求基于URL问号传参传递给服务器 xhr.open(‘GET’, ‘./1.json?lx=1&name=xxx’)
2.POST请求要求传递给服务器的信息,是基于请求主体传递 xhr.send(‘lx=1&name=xxx’)
- GET传递的信息不如POST多,因为URL有长度限制「IE->2KB」,超过这个长度的信息会被自动截掉,这样导致传递内容过多,最后服务器收到的信息是不完整的!!POST理论上是没有限制的,但是传递的东西越多,速度越慢,可能导致浏览器报传输超时的错误,所以实际上我们会自己手动做限制!!
- GET会产生缓存「浏览器默认产生的,不可控的缓存」:两次及以上,请求相同的API接口,并且传递的参数也一样,浏览器可能会把第一次请求的信息直接返回,而不是从服务器获取最新的信息!!xhr.open(‘GET’, ‘./1.json?lx=1&name=xxx&_’+Math.random())
在请求URL的末尾设置随机数,以此来清除GET缓存的副作用 - POST相对于GET来讲更安全一些:GET传递的信息是基于URL末尾拼接,这个随便做一些劫持或者修改,都可以直接改了,而POST请求主体信息的劫持,没那么好做!!但是“互联网面前,人人都在裸奔”!!所以不管什么方式,只要涉及安全的信息,都需要手动加密「因为默认所有的信息传输都是明文的」!!
- fetch与axios的区别(4分)
axios是基于promise封装的ajax类库 fetch是浏览器原生的API
传参字段不一样,axios是放在params或者data里,fetch是放在body里
node环境中不支持fetch,需要引入node-fetch文件才能支持
axios中的配置和拦截器等功能,fetch中都没有。
- 列举几个解决跨域的方法(4分)
JSONP、CORS设置响应头属性Access-Control-Allow-Origin:*
- 列举几个移动端常用单位(4分)
vh/vw/rem/% calc
- DPR设备像素比是什么的比值(2分)
设备像素比=设备的物理像素/逻辑像素
- 列举浏览器常用的本地缓存(6分)
cookie/localStorage/sessionstorage
cookie和localStorage的区别(6分)写上几条就行
cookie * document.cookie
+ 兼容所有浏览器
+ cookie能存储的信息比较少:同源下最多可存储4KB内容
+ cookie是有过期时间 和 “域”的限制的「不能跨域访问」
+ cookie存储的信息非常不稳定
+ 浏览器的无痕浏览器或者隐私模式下是存储不上cookie的
+ 而且基于浏览器清理工具或者一些杀毒软件,清理垃圾信息的时候,即使没过期的cookie也可能被清除掉
+ cookie并不是单纯的本地存储,和服务器之间是有“猫腻”的:每一次向服务器发送请求,客户端都会在请求头中基于Cookies字段,把本地存储的cookie传递给服务器
2. localStorage
+ 不兼容IE6~8
+ 同源下最多可存储5MB,比cookie存储的多很多
+ 永久本地存储,没有过期时间「除非手动清除或者卸载浏览器」;也会受到跨域和跨浏览器的限制;
+ localStorage的稳定性非常好,清除垃圾的时候对他没影响
+ localStorage和服务器没有半毛钱关系如何获取、设置、删除localStorage(6分)
localStorage.setItem([key],[value])
localStorage.getItem([key])
localStorage.removeItem([key])
localStorage.clear()
- 列举4个HTTP状态码(4分)
- 如何获取cookie字段(2分)document.cookie
- 编写代码,使用axios发送get请求并传参(5分)
- 编写代码,使用axios发送post请求并传参(5分)
- 如何通过axios统一配置请求地址和请求头(4分)
- 编写代码使用fetch发送post请求并接收响应体(5分)