HTTP协议的报文

1、HTTP 的报文类型

HTTP 有两类报文:
(1) 请求报文:从客户端发送给服务器端的报文
(2) 响应报文:服务器到客户的回答

两种报文的结构如下图:

HTTP 请求报文(响应报文)是由三部分组成:
1)请求行(响应报文中称之为状态行): 用于区分是请求报文还是响应报文。
2)请求头(响应头): 用来说明浏览器、服务器或报文主体的-些信息。在每一个首部行中都有首部字段名和它的值
3)请求主体(响应主体)

2、http请求报文(请求行、请求头、请求主体)

2.1、请求行

请求报文的 “请求行” 只有三个内容,即:方法、请求URL、以及HTTP的版本。

比如:上例中链接到“ 清华大学院系设置” 页面的请求行:GET   http://www.tsinghua.edu.cη/chn/yxsz/index.htm   HTTP/1.1

此时,该请求报文的请求行就是:GET /chn/yxsz/index. htm HTTP /1. 1 {请求行使用了相对URL}

2.2、请求头

浏览器通过请求头告诉服务器关于浏览器的一些信息,格式: 请求头名称:请求头值

参数介绍:

Accept-Encoding: gzip, deflate             浏览器支持的压缩编码是 gzip 和 deflate。              

Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7       浏览器支持的字符编码分别是 GB2312、utf-8 和任意字符

Accept-Language: zh-cn,zh;q=0.5           浏览器支持的语言分别是中文和简体中文            

Accept: text/html,application/xhtml+xml,application/xml,application/json,*/*    表明浏览器所支持接收的数据类型,表明所支持的 MIME 有:html、xhtml+xml、xml、json、任何类型

Host: www.tsinghua.edu.cn               此行是请求头的开始,表明发出请求的客户端的域名            

Connection: close                              告诉服务器发送完请求的文档后就可释放连接

User-Agent: Mozilla/5.0        表明浏览器的一些版本信息

Referer:https://www.baidu.com/         浏览器目前所处页面的URL

Content-type:application/json          告诉服务器我们发送的请求信息的格式

2.3、请求主体

请求主体放的是请求的参数,比如:username=aaa

GET 请求没有请求主体,它的请求参数放在请求 URL 中:www.baidu.com?username=aaa

3、http 响应报文(状态行、响应头、响应主体)

3.1、状态行

响应报文的第一行就是状态行。状态行包括三项内容,即:HTTP的版本、状态码、以及解释状态码的简单短语。

状态码(Status-Code)都是三位数字的, 分为5大类共33种:

lxx表示通知信息的, 如请求收到了或正在进行处理。
2xx表示成功, 如接受或知道了。
3xx表示重定向, 如要完成请求还必须采取进一步的行动。
4xx表示客户的差错, 如请求中有错误的语法或不能完成。

5xx表示服务器的差错, 如服务器失效无法完成请求。

常见的状态码:

200 请求成功

302 重定向
304 页面缓存

403 没有权限访问
404 页面不存在

500 后端程序报错

具体的状态码查看:http://www.runoob.com/http/http-status-codes.html

4、HTTP中请求头和响应头的各个字段及含义

参考:https://www.cnblogs.com/widget90/p/7650890.html

5、Content-Type 字段各个值的含义

参考:https://www.cnblogs.com/cyanlong/p/5726793.html

6、HTTP协议各个版本的比较(http0.9、1.0、1.1、2.0)

参考:https://www.cnblogs.com/andashu/p/6441271.html#top

https://blog.csdn.net/qq_22238021/article/details/81197157

原文地址:https://www.cnblogs.com/wenxuehai/p/12674659.html