HTTP实用指南 | 青训营笔记

164 阅读4分钟

这是我参与「第四届青训营 」笔记创作活动的第7天

一、什么是HTTP

定义: HTTP (HyperText Transfer Protocol),即超文本运输协议,是实现网络通信的一种规范。

特点:

  • 应用层协议,基于 TCP 协议
  • 请求-响应
  • 简单可扩展
  • 无状态:HTTP协议无法根据之前的状态进行本次的请求处理。
  • 无连接:限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接,采用这种方式可以节省传输时间。

二、HTTP协议分析

1.发展历程

2.报文

请求方法:

HTTP1.0定义了三种请求方法:GETPOSTHEAD方法。
HTTP1.1新增了六种请求方法:OPTIONSPUTPATCHDELETETRACECONNECT方法。

具体如下图

状态码:

状态码的第一位数字决定了不同的响应状态, 主要有下面5种:

  • 1xx: 表示消息,请求已接收,需要继续处理。
  • 2xx: 表示成功,操作被成功接收并处理。
  • 3xx: 表示重定向,需要进一步的操作以完成请求。
  • 4xx: 表示客户端错误,请求包含语法错误或无法完成请求。
  • 5xx: 表示服务器错误,服务器在处理请求的过程中发生了错误。

常用状态码有:

  • 200: 请求成功
  • 204: 服务器成功处理,但未返回内容
  • 301: 请求的资源已被永久的移动到新域名,返回信息包含新域名并会重定向到新的域名。
  • 302: 临时移动,不会缓存,常用于未登陆的用户访问用户中心重定向到登录页面
  • 304: 所请求的资源未修改,不返回任何资源,进行协商缓存,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源。
  • 400: 客户端请求的语法错误,服务器无法理解
  • 401: 请求要求用户身份认证
  • 403: 服务器理解请求客户端的请求,但是拒绝执行此请求
  • 404: 服务器无法根据客户端的请求找到资源(网页)
  • 500: 服务器内部错误,无法完成请求
  • 504: 网关超时

常用请求头

常用响应头

缓存:

浏览器每次发起请求时,先在本地缓存中查找结果以及缓存标识,根据缓存标识来判断是否使用本地缓存。如果缓存有效,则使用本地缓存;否则向服务器发起请求并携带缓存标识。根据是否需向服务器发起HTTP请求,将缓存过程划分为两个部分: 强缓存协商缓存,强缓存优先于协商缓存。

强缓存:

浏览器在加载资源时,先根据这个资源的一些header判断它是否命中强缓存,如果命中,浏览器直接从自身缓存中读取资源,不会发请求到服务器。

协商缓存:

当浏览器的强缓存失效的时候或者请求头中设置了不走强缓存,且在请求头中设置了If-Modified-Since或者If-None-Match的时候,会将这两个属性值到服务端去验证是否命中协商缓存,如果命中了协商缓存,会返回304状态,加载浏览器缓存,并且响应头会设置Last-Modified或者ETag属性。若未命中,则将资源返回客户端,并更新本地缓存数据,会返回200状态

三、了解HTTPS

定义: 具有安全性的SSL加密传输协议,为浏览器和服务器之间的通信加密,确保数据传输的安全。

流程图如下所示:

与HTTP的区别:

如下表:

区别:HTTPHTTPS
传输信息安全性明文传输,不安全具有安全性的ssl加密传输协议
连接方式无状态由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议
端口80443
证书申请方式免费申请需要到ca申请证书,一般免费证书很少,需要交费