HTTP的请求报文解析 与 响应报文解析 、 HTTP请求报文中 GET 和 POST的区别 和 URL解析

一、什么是HTTP?

HTTP是超文本传输协议

二、HTTP特点?

(1)HTTP是无状态协议;
(2)HTTP是web服务使用的协议;
(3)HTTP是基于TCP协议的;
(4)HTTP的通信方式是客户端-服务器模式,即C/S模式
(5)HTTP是应用层协议。

三、HTTP的报文格式

HTTP的报文有两种,分别是请求报文和响应报文

1.请求报文

请求报文是客户端给服务器发送的报文,报文中包含了一些请求的信息
这里写图片描述

字段解析

(1)方法:实际上就是一些命令,例如get、post、head等

GET:请求读取由URL所标志的信息
POST:给server添加信息(例如注释)
HEAD:请求读取由URL所标志的信息的首部

ps:登录页面一般都用的是POST请求

GET和POST的区别

GET没有body
POST有body,body中有若干字符串,首部行中的Content_Length标记着body的长度

(2)URL

定义:是统一资源定位符

格式:
这里写图片描述
字段解释
这里写图片描述
这里写图片描述
这里写图片描述

HTTP的URL格式

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
(3)版本

此字段是HTTP的版本,HTTP有两个版本:HTTP1.0和HTTP1.1

(4)首部行

首部行中是请求的属性,冒号分割的键值对(首部字段名与值可以构成键值对),每组属性之间使用\n分隔,遇到空行表示首部行的结束
ps:在报文中遇到<cr><lf><cr><lf>,此时就表示首部行结束了

(5)首部行中的一些字段解释

Content-Length: 标记着body的长度
User-Agent: 标记浏览器类型和操作系统的版本
Contet-Type: 标记着数据类型(text/html等)
Host: 客户端告知服务器,所请求的资源是在哪个主机的那个端口上
Cookie: 用于在客户端存储少量信息,通常用于实现会话(session)功能
Accept-Language: 标记着用户所使用的语言
Keep-Alive:time:标记着连接的时间
Connection:close 此时表示是非持久连接
Connection:keep-alive 此时表示是持久连接

(6)实体主体(Body)

空行后面的内容都是Body,Body允许为空字符串,如果Body存在,则在首部行中会有一个字段Content_Length来标记Body的长度

2.响应报文

响应报文是服务器给客户端发送的,用来回复客户端的请求
这里写图片描述

字段解析

(1)版本
与请求报文中的版本字段的含义一样,都是标记着HTTP的版本
(2)状态码
状态码都是由三位数字组成的

1xx:信息性状态码,表示接收的请求正在处理
2xx:成功性状态码,请求正常处理完毕

例如:200 表示OK

3xx:重定向状态码,表示要完成请求还必须采取进一步的行动

303(edirect):是重定向

4xx:客户端错误状态码,表示服务器无法处理请求

例如:404是找不到网页或者网页不存在

5xx:服务器错误状态码,表示服务器处理请求出错

(3)短语

短语就是用来解释状态码,与状态码搭配到一起使用的,例如状态码200 的短语就是OK,404的短语就是Not Found

(4)首部行

首部行中是请求的属性,冒号分割的键值对(首部字段名与值可以构成键值对),每组属性之间使用\n分隔,遇到空行表示首部行的结束
ps:在报文中遇到<cr><lf><cr><lf>,此时就表示首部行结束了

(5)首部行中相关字段的解释

Date :表示报文发送的时间
Last-Modified:表示报文的最后修改时间
Content-Length:标记着Body的长度

(6)实体主体(Body)

空行后面的内容都是Body,Body允许为空字符串,如果Body存在,则在首部行中会有一个字段Content-Length来标记着Body的长度,如果服务器返回了一个HTML页面,那么HTML页面内容就是在Body中

猜你喜欢

转载自blog.csdn.net/dangzhangjing97/article/details/80957898