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的区别

1.GET没有body
POST有body,body中有若干字符串,首部行中的Content_Length标记着body的长度
2.GET不安全,POST比较安全
3.GET的参数长度有限制,而POST的参数长度没有限制,是因为GET的参数在URL中,而POST的参数是在body中
4.GET的参数可见,POST的参数不可见

(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的长度
Accept-Ranges:此键值对表明服务器是否接受了范围请求

Accept-Ranges:bytes 代表了该服务器接受范围请求,此时就可以后续操作
Accept-Ranges:none 代表不允许请求

(6)实体主体(Body)

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

常见的状态码
200—OK—客户端请求成功
400—Bad Request—客户端请求有语法错误,不能被服务器所理解
401—Unauthorized—请求未经授权,这个状态码必须和WWW-Authenticate抱头域一起使用
403—Forbidden—服务器收到请求,但是拒绝提供服务
404—Not Found—请求的资源不存在,例如输入了错误的URL
500—Internal Server Error—服务器发生不可预期的错误
503—Server Unavailable—服务器当前不能处理客户端的请求,一段时间后可能恢复正常

  • 8
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值