HTTP 协议
HTTP协议与常见的响应状态码
# HTTP 协议概述
1-1. 什么是通信:通信就是信息的传递和交换(通信三要素:通信的主体、通信的内容、通信的方式)
案例:张三 把自己考上清华大学的好消息 通过打电话的方式告诉 李四
通信主体:张三 和 李四
通信内容:考上清华大学
通信方式:打电话
1-2. 互联网中的通信
案例:服务器 把清华大学的简介 通过响应的方式发送给 客户端浏览器
通信主体:服务器 和 客户端浏览器
通信内容:清华大学的简介
通信方式:响应
2-1. 什么是通信协议:通信的双方完成通信所必须遵守的规则和约定
通俗理解:通信双方采用约定好的格式来发送和接收消息,这种事先约定好的通信格式,就叫做通信协议
案例:张三和李四采用写信的方式进行通信,在填写信封时,写信的双方需要遵守固定的规则
通信协议:信封填写的规则
2-2. 互联网中的通信协议(HTTP协议)
客户端与服务器之间要实现网页内容的传输,则通信的双方必须遵守"网页内容的传输协议"
网页内容又叫做超文本,因此网页内容的传输协议又叫做超文本传输协议,简称"HTTP协议"
HTTP协议:规定客户端与服务器之间进行网页内容传输时,所必须遵守的传输格式。
客户端要以HTTP协议要求的格式把数据提交到服务器
服务器要以HTTP协议要求的格式把内容响应给客户端
3. HTTP协议的交互模型: HTTP 协议采用了 请求/响应 的交互模型(客户端发起请求,服务器响应给客户端)
# HTTP 请求消息
HTTP请求消息由4个部分组成:请求行、请求头部、空行、请求体
1. 什么是HTTP请求消息/请求报文
由于 HTTP 协议属于 客户端浏览器 和 服务器 之间的通信协议,因此,
客户端 发起的请求 叫做 HTTP请求
客户端 发送到服务器的消息 叫做 HTTP请求消息
2. HTTP请求消息的组成部分:请求行、请求头部、空行、请求体
- 请求行:由 请求方式、URL、HTTP协议版本 3个部分组成,它们之间使用空格隔开
- 请求头部:用来描述客户端的基本信息,从而把客户端相关的信息告知服务器
User-Agent:用来说明当前客户端是什么类型的浏览器
Content-Type:用来描述发送到服务器的数据格式
Accept:用来描述客户端能够接收什么类型的返回内容
Accept-Language:用来描述客户端期望接收哪种语言的文本内容
更多字段描述 (opens new window) - 空行:用来分隔请求头部与请求体
- 请求体:请求体中存放的是,要通过 POST 方式提交到服务器的数据(GET请求没有请求体)
# HTTP 响应消息
HTTP响应消息由4个部分组成:状态行、响应头部、空行、响应体
1. 什么是HTTP响应消息
HTTP响应消息:就是服务器响应给客户端的消息内容,也叫做响应报文
2. HTTP响应消息的组成部分:状态行、响应头部、空行、响应体
- 状态行:由HTTP协议版本、状态码、状态描述文本、3个部分组成,它们之间使用空格隔开
- 请求头部:用来描述服务器的基本信息(由多个键值对组成)
X-Powered-By:告诉客户端浏览器,服务器用的是什么软件
Content-Type:服务器响应给客户端的数据格式
Content-Length:服务器响应给客户端的内容长度
Date:响应所发生的时间
更多字段描述 (opens new window) - 空行:用来分隔响应头部与响应体
- 响应体:响应体中存放的是,服务器响应给客户端的资源内容
# HTTP 请求方法
HTTP请求方法:用来表明要对服务器上的资源执行的操作(如:GET 和 POST)
HTTP 请求方法,属于 HTTP 协议中的一部分
# HTTP 响应状态码
HTTP响应状态码:用来标识响应的状态,属于 HTTP 协议中的一部分
1. 什么是HTTP响应状态码
HTTP响应状态码:用来标识响应的状态,属于 HTTP 协议中的一部分
响应状态码会随着响应消息一起被发送至客户端浏览器,浏览器根据服务器返回的响应状态码,判断请求成功/失败
2. HTTP响应状态码的组成及分类
HTTP状态码由三个十进制数字组成,第一个数字定义了状态码的类型,后两个数字用来对状态码进行细分
HTTP状态码共分为 5 种类型:如下图

# 常见的 HTTP 响应状态码
- 2**范围的状态码:表示服务器已成功接收到请求并进行处理(请求成功)
- 3**范围的状态码:表示服务器要求客户端重定向(需要客户端进一步操作以完成资源的请求)
- 4**范围的状态码:表示客户端的请求有非法内容(请求失败)
- 5**范围的状态码:表示服务器未能正常处理客户端的请求,而出现意外错误
