目录
一.HTTP通信协议
二.HTTP请求消息(请求报文)
三.HTTP响应消息(响应报文)
四.HTTP的请求方式
五.响应状态码:
HTTP通信过程包括从客户端发往服务器端的请求以及从服务器端返回客户端的响应
因此奠基了HTTP协议的俩种交互模型:请求/响应的交互模型
通信是信息的传递和交换,我们需要了解通信是由主体、内容以及方式三方面组成
通信协议(Communication Protocol)是指通信的双方完成通信必须要遵守的规则和约定
在互联网中,客户端与服务端之间想要实现网页内容的传输,那么通信双方须遵守网页内容的传输协议,网页内容是超文本,所以,网页内容的传输协议也叫做超文本传输协议 (HyperText Transfer Protocol)或者我们简称为HTTP协议
由于HTTP协议属于客户端浏览器和服务器之间的通信协议,所以客户端发起的请求叫做HTTP请求,客户端发送到服务器的消息,也就是HTTP请求消息或者称为HTTP请求报文
HTTP请求消息由请求行、请求头部、空行以及请求体四部分组成,我们来看一张图:
接下来我们依次介绍一下这个四部分:
1.请求行:请求行是由请求的方式(GET\POST等)、URL地址、HTTP协议版本组成,之间空格隔开
2.请求头:请求头是用来描述客户端的基本信息,将客户端的相关信息告知服务器,由多行键值对组成
请求头常见的四种较为重要的字段分别是:
User-Agent:用来说明当前是什么类型的浏览器
Content-Type:用来描述发送到服务器的数据格式
Accept:用来描述客户端能够接收什么类型的返回内容或数据
Accept-Language:用来描述客户端希望接收那种语言的文本内容
3.空行:最后一个请求字段的后面就是一个空行,告知服务器请求头部到此结束,用来分隔开请求头部和请求体
4.请求体:请求体中存放的是要通过POST请求方式提交到服务器的数据,所以不难理解GET请求方式就没有请求体的
服务器响应给客户端的消息内容,就叫做HTTP响应消息或响应报文
HTTP的响应消息也有四部分组成,分别为:
状态行,响应头部,空行,响应体
1.状态行:状态行是由HTTP协议版本、状态码以及状态描述文本三个部分组成,空格隔开
2.响应头部:使用多行键值对的组成,来描述服务器的基本信息
3.空行
4.响应体:存放服务器响应给客户端的数据资源
*格式与请求体格式相像,可以参考上面的请求体图示
说到请求方式我们并不陌生,GET、POST,但是只有这俩种请求方式吗?并不是,我们来看一张图:
HTTP Status Code
我们在请求完成之后(无论成功或失败),在检查网络中都会看到这样一个数字:
成功的话就显示200,这是就是响应状态码,后面的OK就是HTTP响应状态码的描述文本,为什么要有这个状态码呢?它又是怎么样工作的?
响应状态码会随着响应消息一起被发送到客户端浏览器,浏览器再根据服务器返回的这个状态码来判断当前HTTP请求成功与否,它其实是由三个二进制数字组成,第一个十进制数字定义了状态码类型,后面的俩个数字对当前状态码类型再进行深度细分
我们接下来使用表格来分析状态码的类型:
1开头 | 信息-服务器接收到信息,需要请求者继续执行对应操作 |
2开头 | 成功-操作被接收到并成功处理 |
3开头 | 重定向-需要进一步操作以完成请求 |
4开头 | 客户端错误-请求包含语法的错误或者无法完成请求 |
5开头 | 服务器错误-服务器在处理请求过程中发生了错误 |
1开头我们并不常见,知道就可以了
2开头的常见为:
200:OK——请求成功,一般用于GET和POST请求
201:Created——已创建,成功请求并创建了新资源,一般用于POST和PUT请求
3开头的常见为:
301:Moved Permanentiy——永久移动,请求的资源已经被永久的移动到了新的URL,返回信息会包括新的URL,浏览器会自动重定向到新的URL,此后任何请求都使用新URL地址代替
302:Found——临时移动,资源只是被临时移动,客户端继续使用原有的URL
304:Not Mondified——未修改,所请求的资源未修改,服务器返回此状态码时不会返回任何的资源,客户端通常会缓存访问过的资源(在防抖中介绍过数据缓存使用方法)
4开头常见的为:
400:Bad Request——语义有误,当前请求无法被服务器理解,除非进行修改否则客户端不会重复提交这个请求
401:Unauthorized——当前的请求需要用户的验证
403:Forbidden——服务器以及理解请求,但是拒绝执行
404:Not Found——服务器无法根据客户端的请求找到资源
408:Request Timeout——请求超时
5开头常见的为:
500:Internal Server Error——服务器内部错误,无法完成请求
501:Not Implemented——服务器不支持当前请求所需要的某个功能,只有GET和HEAD请求方法是需要每个服务器都支持的,其他请求方法在不支持的服务器上会返回501
503:Service Unavailable——由于服务器的维护或者过载,服务器当前无法处理请求
这些是最常见的一些响应状态码,推荐给大家一个不错的博客,详细的介绍了几乎所有的状态码
状态码 | IT工程师的生活足迹https://cn-blogs.cn/?s=%E7%8A%B6%E6%80%81%E7%A0%81