导航
导航
文章目录
  1. HTTP协议的作用
  2. HTTP协议特点
  3. HTTP请求报文
    1. 请求行
    2. 请求头部
    3. 请求体
  4. HTTP响应报文
    1. 状态行
      1. 状态码
    2. 响应头
  5. HTTP其他特性

HTTP协议学习笔记

HTTP协议是计算机网络的基本协议,对于前端工程师,HTTP协议是必须了解的一部分内容。前端面试中也会经常被问到这部分的内容,这里就总结一下。

HTTP协议的作用

HTTP协议是应用层的协议,它已经不涉及数据包之类的传输,它规定了网络中客户端和服务器之间的通信格式。客户端通过URL向HTTP服务端即Web服务器发送请求,Web服务器根据接收到的请求后,向客户端发送响应信息。

HTTP协议特点

HTTP协议主要特点总结如下:

  1. 简单快速:客户端向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户端与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
  2. 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
  3. 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  4. 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

HTTP请求报文

客户端以请求报文的形式发送请求到服务端,HTTP请求报文由请求行、请求头和请求体组成。

请求行

请求行由请求方法字段、URL字段和HTTP协议版本字段三部分组成,用空格分隔。例如:

1
GET /index.html HTTP/1.0

HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT等。我的另一篇博客中有总结过。

请求头部

请求头部由键值对组成,每行一对,请求头部通知告诉服务器关于客户端本次请求的信息。常用的请求头有:

  1. Accept:用于指定客户端接受哪些类型的返回。例如:Accept:text/html,表明客户端希望接受html文本。
  2. Accept-Charset:用于指定客户端接受的字符集,默认是任何字符集都可以接受。
  3. Accept-Encoding:用于指定可接受的内容编码,默认是任何编码都能接受。
  4. Accept-Language:用于指定可接受的自然语言,默认是任何语言都能接受。
  5. Host:用于指定被请求资源的主机和端口号,通常从URL中提取出来。
  6. User-Agent:产生请求的客户端类型。

请求体

请求体中是客户端要传送给服务端的数据。

HTTP响应报文

服务端接收并处理客户端的数据后会返回一个HTTP的响应消息,HTTP响应报文由状态行、响应头和响应正文组成。

状态行

状态行由HTTP协议版本号、状态码和状态消息组成。例如:

1
HTTP/1.1 200 OK

状态码

HTTP状态码是一个三位数,总共分为5种类型。常见的状态码可以参考HTTP状态码大全

  1. 1xx:指示信息–表示请求已接收,继续处理。
  2. 2xx:成功–表示请求已被成功接收。
  3. 3xx:重定向–要完成请求必须进行更进一步的操作。
  4. 4xx:客户端错误–请求有语法错误或请求无法实现。
  5. 5xx:服务器端错误–服务器未能实现合法的请求。

响应头

响应头的格式和请求头相同,常用的响应头有:

  1. Content-Encoding:用于指定媒体类型的修饰符,指示了已经被应用到实体正文的附加内容编码。
  2. Content-Language:用于指定资源所用的自然语言。
  3. Content-Length:用于指明实体正文的长度,以字节方式存储的十进制数字来表示,用其对应的ASCII码存储传输。这个长度不包括实体报头的长度。
  4. Content-Type:用于指明发送给接收者的实体正文的媒体类型。
  5. Expires:用于指明响应过期的日期和时间,为了客户端在一段时间以后更新缓存中(再次访问曾访问过的页面时,直接从缓存中加载,缩短响应时间和降低服务器负载)的页面,我们可以使用Expires实体报头域指定页面过期的时间,是一个绝对时间。
  6. Last-Modified:用于指示资源的最后修改日期和时间。
  7. Location:用于重定向接受者到一个新的位置。

HTTP其他特性

随着HTTP版本的更新,引入了很多新的特性。包括持久连接、管道机制、分块传输编码、二进制协议、多工、头信息压缩和服务端推送等。有兴趣的可以自己去了解一下。

本文总阅读量: