前端面试题之HTTP

从输入URL到页面加载发生了什么

大致过程如下:

  1. DNS 解析:域名 -> IP地址;
  2. TCP 的连接;
  3. 浏览器向服务器发送 HTTP 请求;
  4. 服务器处理 HTTP 请求,并返回给浏览器;
  5. 浏览器解析渲染页面;
  6. 关闭连接;

HTTP的状态码及含义

  • 1xx:代表请求已被接受,需要进一步处理。这类响应是临时响应;
  • 2xx:请求成功;
  • 3xx:重定向,需要进一步操作;
  • 4xx:客户端错误;
  • 5xx:服务器错误;

常见的HTTP状态码:

  • 200:请求成功;
  • 301:永久重定向,资源(网页等)被永久转移到其他URL;
  • 302:临时重定向,请求的资源临时搬到其他位置;
  • 400:错误的请求;
  • 403:拒绝访问;
  • 404:请求的资源(网页等)不存在;
  • 405:客户端请求的方法错误
  • 414:请求的URL过长
  • 500:内部服务器错误;

Cookie、Session、LocalStorage之间的区别

传送门 - Cookie、Session、LocalStorage、Cache-Control


HTTP缓存有哪几种

HTTP缓存可分为两大类,分别是:强制缓存和协商缓存。

强制缓存在缓存数据未生效的情况下,是不需要再和服务器发生交互的;而协商缓存,顾名思义是需要进行比较判断是否可以使用缓存。

强制缓存的优先级高于协商缓存的

强制缓存

强制缓存分两种情况,分别是Expires和Cache-Control

Expires:它的值是服务器告诉浏览器的缓存过期时间的,是一个绝对时间,即如果下次请求时,如果当前距上次请求时间还未超过过期时间时,就直接使用缓存数据。但是存在部分问题:①客户端和服务器的时间不一致会出现问题;②在缓存未生效前,获取不到修改后的资源。

Cache-Control:它是设置相对时间,就解决了Expires出现的问题。

Cache-Control有以下可选值:

  1. no-cache:不直接使用缓存,根据新鲜度来使用缓存
  2. no-store:不使用缓存,每次都是请求下载新资源
  3. max-age:设置缓存存储的最大周期,超过这个时间就被认为过期
  4. public / private:是否只能被单个用户使用,默认值为private
  5. must-revalidate:每次访问需要缓存校验

注意:Cache-Control优先级高于Expires

协商缓存

相关属性有:ETag/if-Not-Match、Last-Modified/If-Modified-Since

执行流程如下:

  1. 当浏览器第一次向服务器发送请求时,会在响应头中返回协商缓存的头属性:ETag和Last-Modified,其中ETag返回的是一个hash值,Last-Modified返回的是GMT格式的最后修改时间。
  2. 浏览器在第二次发送请求的时候,会在请求头中带上与ETag对应的if-Not-Match,其值就是响应头中返回的ETag的值,再带上Last-Modified对应的If-Modified-Since。服务器在接收到这两个参数后会做比较,如果返回的是304状态码,则说明请求的资源没有修改,浏览器可以直接在缓存中取数据,否则,服务器会直接返回数据。

他们的优先级是:Cache-Control > Expires > ETag > Last-Modified


GET和POST的区别

  1. GET请求一般去请求获取数据,POST请求一般发送数据到后台使用;
  2. GET请求的参数在url上可见,而POST请求的参数放在Request body中;
  3. GET请求参数的长度有限制,POST请求没有长度限制;
  4. GET请求刷新浏览器或回退没有影响,POST请求回退会重新提交数据;
  5. GET请求可被缓存,POST请求不会;
  6. GET请求保留在浏览器历史记录里,POST请求不会;
  7. GET请求可被收藏为书签,POST请求不能;
  8. GET请求只能进行url编码,POST请求支持多种编码方式;
  9. GET请求只需要一个报文,POST请求需要两个及以上;

其实这两种请求最本质的区别就是语义不同,GET请求是获取数据,而POST请求是提交数据


HTTP与HTTPS的区别

  1. http是以http://开头,https是以https://开头;
  2. http默认使用80端口,而https默认使用443端口;
  3. http是超文本传输协议,信息采用明文传输,而https则是具有安全性SSL加密传输协议;
  4. https协议需要到证书颁发机构CA申请证书,大多数情况下需要一定费用;

描述一下TCP的三次握手和四次挥手

传送门 - 网络模型与TCP协议


http1与http2的区别

  1. 新的二进制格式(Binary Format),HTTP1.x的解析是基于文本。基于文本协议的格式解析存在天然缺陷,文本的表现形式有多样性,要做到健壮性考虑的场景必然很多,二进制则不同,只认0和1的组合。基于这种考虑HTTP2.0的协议解析决定采用二进制格式,实现方便且健壮。
  2. 多路复用(MultiPlexing),即连接共享,即每一个request都是是用作连接共享机制的。一个request对应一个id,这样一个连接上可以有多个request,每个连接的request可以随机的混杂在一起,接收方可以根据request的id将request再归属到各自不同的服务端请求里面。
  3. header压缩,HTTP1.x的header带有大量信息,而且每次都要重复发送,HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。
  4. 服务端推送(server push),同SPDY一样,HTTP2.0也具有server push功能。

传送门 - HTTP1.0、HTTP1.1 和 HTTP2.0 的区别

posted @ 2020-09-01 13:54  LqZww  阅读(37)  评论(0编辑  收藏