HTTP实用指南(字节青训营)

120 阅读4分钟

这是我参与「第四届青训营 」笔记创作活动的第5天,今天在老师的讲解下。我了解了HTTP使用指南。

一.初识HTTP——什么是HTTP

HTTP全文为Hyper Text Transfer Protocol(超文本传输协议),其为基于TCP协议的应用层协议,负责请求和响应。具有简单可扩展的特点。下图比较形象的展示了HTTP的作用。

image.png

二.协议分析

(1)发展历程

image.png

(2)报文

HTTP1.0定义了三种请求方法:GETPOSTHEAD方法。

HTTP1.1新增了六种请求方法:OPTIONSPUTPATCHDELETETRACECONNECT方法。

具体如下图:

image.png

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

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

常用状态码有

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

下面列举一些常用请求头

image.png

一些常用响应头

image.png

三.缓存

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

强缓存

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

image.png

协商缓存

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

image.png

四.了解HTTPS

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

image.png

流程图如下所示:

image.png

与HTTP的区别:

  • 在传输信息安全性上来看:HTTP明文传输,不安全,HTTPS具有安全性的ssl加密传输协议
  • 在连接方式上来看:HTTP无状态,而HTTPS是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议
  • 端口:HTTP有80个端口,而HTTPS有443个端口。
  • 证书申请方式:HTTP免费申请,HTTPS需要到ca申请证书,一般免费证书很少,需要交费