HTTP基础知识

112 阅读3分钟

「这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战

HTTP为超文本传输协议,超文本指的是相比于普通文本更为强大,其支持除了文本等资源,传输协议则是客户端和服务器端的通信规则。该协议是基于TCP/IP协议的。简单回顾一下TCP协议,TCP协议需要经过三次握手,三次握手流程为:

  1. 客户端向服务器发出连接请求,等待服务器确认。
  2. 服务器端向客户端回送响应,通知客户端收到了连接请求。
  3. 客户端再次向服务器发送确认信息,确认连接。

TCP协议是一个相对安全的协议,HTTP因为是基于TCP协议,故其也是一个安全的协议。注意:当我们访问一次百度页面时,其客户端实际请求个数并不是1,js、css以及各种图片资源会自动发动请求。

但是我们使用<script>,<link><img>标签,没有手动发起请求,但是仍然能从服务器端拿到数据,原因就是:在浏览器遇到<script>,<link>,<img>标签时会自动发出请求。

HTTP协议组成

由HTTP协议的概念可知,它分为问和答两部分。其中问指的就是请求部分,而答指的就是响应部分。

下面介绍一下请求的组成部分,其分为:

  1. 请求行,永远位于请求的第一行。
  2. 请求头,从第二行开始,到第一个空行结束。
  3. 请求空行,区分请求头和请求体。
  4. 请求体

请求的方式:

  • GET

这种方式提交的数据会显示的显示在网址的后面,相对来说不太安全。下图即为其基本格式:

1638177719593.png

  • POST

而post提交的数据不会显示在网址的后面,相对来说安全,并且需要注意的是只有POST请求方式才有请求体。

1638177872292.png

两个的不同区别就是get的参数是保存至url的,而post参数则是保存在请求体里面的。

下面介绍一下响应的组成部分,响应也分为四个组成部分:

  • 响应行

请求方式 HTTP/版本号 状态码 状态描述。

常见状态码:

状态码说明
200一切都OK。
302/307请求重定向(客户端行为,两次请求,地址栏发生改变)
304请求资源未发生变化,使用缓存
404请求资源未找到
500服务器错误
  • 响应头
消息头说明
Location请求重定向的地址,常与302,307配合使用。
Server服务器相关信息。
Content-Type告知客户浏览器,响应正文的MIME类型。
Content-Length告知客户浏览器,响应正文的长度。
Content-Encoding告知客户浏览器,响应正文使用的压缩编码格式。常用的gzip压缩。
Content-Language告知客户浏览器,响应正文的语言。zh_CN或en_US等等。
Content-Disposition告知客户浏览器,以下载的方式打开响应正文。
Refresh定时刷新
Last-Modified服务器资源的最后修改时间。
Set-Cookie( ***** **)会话管理相关,非常的重要
Expires:-1服务器资源到客户浏览器后的缓存时间
Catch-Control: no-catch不要缓存,//针对http协议1.1版本
Pragma:no-catch不要缓存,//针对http协议1.0版本
  • 响应空行
  • 响应体

下图为响应的具体组成:

1638178373914.png