前端面试

HTTP HTTPS

2023-02-25  本文已影响0人  Sue1024

HTTP

超文本传输协议 Hyper Text
Transfer Protocol,是符合TCP标准的应用层,以明文方式发送内容,不提供任何方式的数据加密。

请求方法

GET POST PUT HEAD OPTIONS DELETE TRACE CONNECT

请求头

通用头 请求头 响应头 实体头

连接
  1. 短连接: 1.0默认使用短连接,即每次请求都要重新发起连接,数据交换结束即关闭连接
  2. 长连接:1.1起默认使用长连接,连接建立后不断开。
各版本
1.0
  1. 默认使用短连接
  2. 使用if-modified-since expires来做缓存判断标准
  3. 存在带宽浪费现象,比如客户端仅需要对象的一部分,服务端将整个对象送来
1.1
  1. 默认使用长连接
  2. 引入更多缓存判断标准Etag if-None-Match
  3. 允许请求资源的某个部分
  4. 新增了24个状态码
2.0
  1. 允许多路复用,做到同一个连接并发处理多个请求
  2. 支持二进制编码
  3. 将相同的首部进行压缩,不重复传输
  4. 流量控制
  5. 支持服务器推送(CSS和JS一起发送),不仅只是客户端发起请求,服务端可以自己发送一些数据。
3.0

1、QUIC (Quick UDP Internet Connections)是基于UDP协议的。
2、解决了 TCP 的队头阻塞问题(某一个流的数据有丢包,则同样会阻塞在它之后传输的流数据传输)。而 http3.0 中不同的流之间真正的实现相互独立传输,互不干扰。
3、在切换网络时的依旧保持连接。

状态码
状态码 解释
100 服务器收到了请求,请客户端继续发送 1XX是1.1版本新定义的,可以优化某些场景,比如:客户端有一个较大的文件需要上传并保存,但是客户端并不知道服务端是否愿意接受这个文件,所以希望在消耗网络资源进行传输之前,先询问服务器的意愿,实际操作为,请求头加上Expect: 100-coninue, 若服务器接受,返回100,否则417
200 请求成功
201 成功请求并创建了新资源
202 已接受请求,但未处理完成
203 非授权信息
204 服务器成功处理,但未返回内容
301 请求的资源已被永久的移动到新URL,返回信息会包括新的URL
302 资源临时被移动,客户端应继续使用原有URL
303 使用GET和POST请求查看其他地址
304 请求已被允许,但文档的内容并没有改变(缓存)
305 所请求的资源必须通过代理访问
307 使用GET请求重定向
400 请求无效,前端数据与后端数据不一致,请求格式不对
401 当前请求需要用户验证
403 服务器已经得到请求,但是拒绝执行,比如身份验证不通过
404 服务器无法根据客户端的请求找到资源
405 客户端请求中的方法被禁止
408 服务器等待客户端发送的请求时间过长,请求超时
410 客户端请求的资源已经不存在
413 由于请求的实体过大,服务器无法处理,因此拒绝
414 请求的URL过长
415 服务器无法处理请求附带的媒体格式
416 客户端请求的范围无效
500 服务器内部错误,无法完成请求
501 这个状态码不常见,意思是未实现,这个解释会给人误导,并不是意味着我们访问了一个未实现的api,而是服务器目前不具备满足您对该内容请求的功能, 比如服务器脱机了
503 由于超载或系统维护,服务器暂时无法处理客户端的请求
505 服务器不支持请求的http协议的版本

HTTPS

HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并未浏览器和服务器之间的通信加密。简单来说是HTTP的安全版。
SSL(Secure Sockets Layer)最初由网景公司设计(1994),用来加密HTTP协议传输的数据.

主要区别

  1. HTTPS需要到CA申请证书,一般需要一定费用
  2. HTTPS安全性更高
  3. HTTP的默认端口是80,HTTPS是443
  4. HTTP本身是无状态的,非常简单的协议;HTTPS是由SSL+HTTP构建的可进行加密传输、身份认证的网络协议,它是有状态的。
  5. https更消耗时间和资源(ssl部分需额外花费三倍时间)
  6. https在SEO方面,谷歌搜索引擎算法中给了https加密的网站更高的排名。

HTTPS的工作原理

  1. 用户在浏览器输入一个https网址,连接到对应server的443端口
  2. 采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,自己制作的证书需要客户端验证通过才可以继续访问。
    这个证书就是一对公钥和私钥。私钥相当于钥匙,公钥相当于锁,
  3. 服务端传送证书给客户端(公钥,相当于把锁给别人,别人可以用这把锁把重要的东西锁起来,然后发给你,因为只有你一个人有钥匙,所以只有你才能看到)
  4. 客户端解析证书,由客户端的TLS来完成。
    TLS/SSL 安全传输层协议,用于在两个通信应用程序之间提供保密性和数据完整性。TLS是SSL的升级版,二者经常混用,小编也说不清楚,总之是先有了SSL1.0 2.0,但各种bug,后来直接推出了TLS1.0,又有了SSL3.0。
    那么TLS确认保证公钥不是被篡改的。TLS会确认证书中的颁发机构和过期时间,只要证书是可信的,那么公钥就是可信的。
    如果证书没有问题,就会生成一个随机值,然后用公钥对该随机值进行加密。
  5. 客户端传送随机值给服务端
  6. 客户端用私钥解密公钥(锁)之后,得到随机值,然后之后的传输都用该随机值所谓私钥进行对称加密传递信息。
对称加密和非对称加密方法列举
  1. 非对称加密: RSA DSA
  2. 对称加密: AES RC4
  3. HASH加密: MD5 SHA1
HTTPS的优缺点
优点
  1. 安全
缺点
  1. 握手阶段费时
  2. https 缓存不如 http 高效,增加数据开销。
  3. SSL 证书消耗成本,功能越强大的证书费用越高。
上一篇 下一篇

猜你喜欢

热点阅读