参考:
https://juejin.cn/post/6844903590058786824
https://space.bilibili.com/327247876
https://blog.csdn.net/qq_38128179
https://www.bilibili.com/video/BV18f4y1H7Zu
https://blog.csdn.net/weixin_45070175/article/details/118559272
https://www.jianshu.com/p/26879146d865
文章目录
-
-
- 一、计网
-
- 1.ajax,fetch,axios是什么,优缺点?
- 2.跨域方式有哪些?特点是什么?
- 3.TCP三次握手四次挥手,握手哪次最容易被攻击?
- 4.HTTP报文结构,头有哪些字段?
- 5.TCP/IP五层模型?网络OSI七层模型有哪些?TCP是哪一层,这层还有什么协议?
- 6.http1.0和http1.1和http2的区别,http3?
- 7.GET和POST区别?
- 8.http和https有什么区别?https实现原理?(SSL/TLS)
- 9.localStorge,SessionStorage,cookie,session,token都是什么?
- 10.什么是JWT?(Json Web Token)
- 11.indexDB和localStorage区别?
- 12.http缓存有哪些?
- 13.TCP和UDP有什么区别?
- 14.TCP如何保证可靠传输的?
- 15.从浏览器输入url后都经历了什么?浏览器渲染页面的流程?
- 16.回流reflow和重绘repaint?
- 17.CDN缓存是什么?
- 18.DNS是什么?
- 19.xss和csrf是什么,如何防范?(前端安全)
- 二、操作系统
-
一、计网
1.ajax,fetch,axios是什么,优缺点?
1)ajax
ajax指异步的javascript和XML,是一个技术统称,特点就是局部刷新页面、不需要重载整个页面。ajax通过js操作浏览器提供的XMLHttpRequest构造函数表示网页请求,以此来进行网络通信。
ajax内部有这么几个需要注意点函数和参数:
open(请求方法,url,是否异步):定义请求
send(请求体):发送请求
readyState:相当于客户端的状态码
readyState属性值的变化会触发**onreadystatechange()**回调函数,因此使用onreadystatechange监视readyState属性的变化。
0:未调用open方法
1:调用了open方法,未调用send方法
2:发送了请求还未收到响应
3:收到部分响应
4:响应都接收完毕
function ajax(url){
//1.由于js自身没有网络沟通能力,因此需要创建浏览器提供的XMLHttpRequest
let xhr = new XMLHttpRequest();
//2.接着定义请求,用open()方法填写请求类型,URL和是否异步
xhr.open('get',url,true);
//3.用onreadystatechange()监控readyState属性值变化
xhr.onreadystatechange = () =>{
if(xhr.readyState===4){
//如果readyState等于4就表示收到所有响应了
if(xhr.status===200){
//收到所有响应不代表成功接收文件,可能文件不存在了,因此要判断状态码
console.info("响应结果",xhr.response);
}
}
}
//4.用send()方法发送请求
xhr.send(null);
}
2)fetch
fetch是基于es6提出的promise的发送网络请求的API,因为使用了promise,因此链式调用,不会产生回调地狱。
fetch默认发送请求方法是GET方法:
function fetchmethod(url){
fetch(url)
.then(response=>{
//收到服务器传来的响应
if(response.ok){
//如果响应状态为ok成功,则将响应转换为js可以操作的json对象
response.json();
}
throw new Error("错误提示");//失败则抛出异常
})
.then(data => console.log(data));//得到想要的信息
}
fetch如果发送POST请求,就需要设置第二个参数(一个配置对象):
function fetchmethod(url){
fetch(url,{
method:'POST',
//请求体提交前要转换成服务器能识别的格式,把js对象转为json
body: JSON.stringify({
key:value}),
headers:{
//定义http请求头部的类型,让服务器能够更好识别内容
'Content-Type':'application/json'
}
})
.then(response=>{
if(response.ok){
res