在开始使用 Node.js 创建 web 应用之前,需要了解最基础的 HTTP 协议知识

概念

Web 的诞生主要有三要素

  1. HTML
  2. URL
  3. HTTP

HTTP 协议全称 Hyper Text Transfer Protocol(超文本传输协议),是一个客户终端和服务器端的请求、响应标准,是应用层协议

客户端与服务器通信

客户端和服务器通信分为客户端请求和服务器响应两个过程
image.png
image.png

报文

客户端发起请求、服务器返回信息过程中交换信息称为 HTTP 报文,HTTP 报文是由多行数据构成的字符串文本

请求报文

image.png

响应报文

image.png

常用首部

在请求和响应报文中有些很常用的首部字段

报文 含义
Transfer-Encoding:chunked 服务器传输大量数据时候分块发送
Accept 客户端可以处理的媒体类型
Accept-Encoding 客户端能理解的编码方式(gzip\br\deflate)
Cache-Control 客户端缓存控制
User-Agent 客户端信息
Content-Length 返回内容字节数
Content-Type 返回内容的媒体类型(MIME)
Cookie 写入客户端的 Cookie

状态码

HTTP 会在响应报文中使用状态码返回请求的处理结果,状态码由 三位数字 + 原因短语组成 (请求成功对应状态码和短语 200 OK ),状态码一般是 100 ~ 599 之间的数字,其大致含义如下

类别 原因短语
1xx Informational(信息性状态码) 请求正在处理
2xx Success(成功状态码) 请求处理完毕
3xx Redirection(重定向状态码) 需要附加操作以完成请求
4xx Client Error(客户端错误状态码) 服务器无法处理
5xx Server Error(服务器错误状态码) 服务器处理请求出现异常

最常见的有

  1. 200 请求成功
  2. 301 永久重定向
  3. 304 请求资源未发生改变
  4. 307 临时重定向
  5. 403 无权限访问
  6. 404 请求资源未找到
  7. 500 服务器内部异常
  8. 502 请求超时
  9. 503 服务器暂时无法处理请求