HTTP协议请求数据及状态码详解

请求数据

请求行

请求行:HTTP请求的第一行,由分隔开的请求方式,URL,协议版本组成

如:
在这里插入图片描述

请求方式(请求动作)

(1) 作用:告诉服务端要对资源做什么操作
(2) 常见分类:GET、POST(补充HEAD、PUT、PATCH、OPTIONS、DELETE、CONNECT、TRACE)
(3) GET和POST的区别:

1.使用场景:GET多用于去服务端获取数据等查询操作;POST多用于注册,上传文件等提交动作
2.安全性:GET请求携带的数据在URL中,不安全;POST相对安全,但抓包还是可以看到
3.携带数据的位置:GET请求的数据在URL中;POST在后面的请求体中
4.支持的数据格式:GET仅支持文本数据,或URL编码后的二进制数据;POST支持传输文本和二进制数据,所以一般上传文件要用POST请求

(4) 其他请求方法(了解即可):

HEAD:向服务端发出获取资源的请求后,服务端仅发送回部分响应数据(不把资源传回来)
PUT:给指定位置上传最新数据,用于上传文件、更新整体数据
PATCH:更新局部资源
DELETE:请求服务器删除指定的资源
CONNECT:用于SSL加密服务器的链接
OPTIONS:测试服务器是否可以正常运行;可从响应包中查看服务端支持哪些请求方法
TRACE:用于测试和诊断
注意:以上方法均仅在服务端设定为允许使用时,才可使用(一般都是禁止的)

URL

UniformResourceLocator,统一资源定位器(符),即网址。
包含6个部分,如http://www.baidu.com/index.php/?name=yuanshen
1.传输协议:即http
2.层级URL标记符号:即//
3.服务器域名(或ip):如www.baidu.com或127.0.0.1
4.端口号(默认隐藏):http默认为80端口,https默认443端口
5.URI路径:如/index.php
6.查询参数:即GET请求所传递的参数,以问号+键值对的形式存在,如?name=yuanshen,多个参数间用&连接

注意:在请求行中的URL一般被精简为了URI+查询参数
在这里插入图片描述

协议版本

(1)HTTP 0.9:HTTP 0.9是第一个版本的HTTP协议,已过时。它的组成极其简单,只允许客户端发送GET这一种请求,且不支持请求头。由于没有协议头,造成了HTTP 0.9协议只支持一种内容,即纯文本。不过网页仍然支持用HTML语言格式化,同时无法插入图片。
(2)HTTP 1.0:HTTP协议的第二个版本,第一个在通讯中指定版本号的HTTP协议版本,至今仍被广泛采用.
(3)HTTP 1.1:HTTP协议的第三个版本是HTTP 1.1,是目前使用最广泛的协议版本 。
(4)HTTP 2.0:HTTP 2.0是下一代HTTP协议,2015年成为标准,目前应用还非常少。

请求头

Accept

在这里插入图片描述
作用:用来告诉服务端,我客户端浏览器支持的数据MIME类型
写法:大类/小类。具体来说:

text:文本数据;text/html:指定了text中的html文档
application:用于传输应用数据或二进制数据;application/xhtm+xml:xhtml和xml文档

补充:

其中的q=0.9是什么意思?
答:可以看到整句话是由分号分隔开的,每小句的前面会写q的值(第一个的q=1省略不写)作为权重,表示我客户端接收文件类型的优先级。

Referer

效果:记录上一个请求的网址,(提交了请求数据的网址才会有),即记录了我们在哪个网址提交了数据

如:进入新浪的主页,开启抓包,随便点入一篇文章,这时referer的值就是新浪的网址
在这里插入图片描述

作用:服务端对referer检查,可以起到防止盗链的作用

盗链:其他网站直接链接到你网站上的资源(如图片、CSS、JavaScript 文件等),从而消耗你的带宽和资源,而未经你的许可。

User-Agent (UA)

在这里插入图片描述
作用:提供与客户端浏览器或其他访问软件的信息,服务端通过它来判断是哪种客户端

HOST

在这里插入图片描述
记录了服务端的域名或ip

X_FORWARDED_FOR

许多服务器会用nginx之类部署一台代理机来先接收客户端的请求,拿到请求包后会在其中添加该字段记录下客户端的ip,之后将请求包再发给服务器,这样服务器就得知了客户端的ip。
所以该字段我们在客户端抓包时是看不到的。

Content-Type

在这里插入图片描述
(1) 作用:告诉服务端我的请求所带的数据是什么格式的,方便服务端对数据解析
(2) 分类:

传文本型(url型)

1、 application/x-www-form-urlencoded
对应的数据格式如:id=1&name=%A1%B2%C3

上传文件型

2、multipart/form-data:主要用于上传文件,告诉服务端数据是分块传输的(文件都较大需分块)

数据包如:
在这里插入图片描述

json型

3、application/json:告诉服务端我的数据是以json形式传输的,数据格式形如:{“id”:1,“name”:“ys”}

Content-Length

指示出报文中的实体主体的字节大小。若经过gzip压缩,则指示的是压缩后的大小。

Transfer-Encoding

不确定Content-Length时,可使用Transfer-Encoding: chunked以忽略Content-Length字段

Cookie

用于身份认证(详见身份认证篇)

Accept-Encoding

在这里插入图片描述
在这里插入图片描述

Connection

用于表示客户端与服务器之间的连接类型。它可以用来指定是否在请求完成后保持与服务器的连接,或者表示请求完成后是否关闭连接。

分类:
1、keep-alive:表示客户端希望保持与服务器的持久连接。也就是说,在请求完成后,连接将保持打开状态,以便进行后续的请求和响应。这样可以减少每次请求的连接建立开销,并提高性能。
2、close:表示客户端要求在请求完成后关闭与服务器的连接。这意味着每次请求都需要重新建立连接。在 HTTP/1.1 版本中,默认情况下,如果请求头中未显式指定 Connection,会使用 keep-alive,除非服务器发送了 Connection: close 响应头。
3、Upgrade:它通常用于升级协议,例如将 HTTP 协议升级为 WebSocket 或其他协议。在这种情况下,之后的通信将使用新的协议。

空行

将请求行和请求正文分开,必要的

请求正文

HTTP 协议请求正文是在客户端向服务器发送请求时,通过请求方法(如 POST、PUT)携带的数据部分。请求正文位于请求报文的空行之后。
简单说就是我们提交给服务端的数据。如当Content-Type: multipart/form-data时,就是要上传的文件内容。

状态码 (补充)

表示本次请求和响应的状态。由3位数字组成。

分类

1xx消息:请求已被服务器接收,正在处理
2xx成功:请求已被接收,理解,接受
3xx重定向:需后续操作才能完成这次请求
4xx客户端请求出错:请求中有误
5xx服务端错误:服务端出错

常见状态码

1开头(信息类):
100(继续):接受的请求正在处理
101(转换协议)

2开头(成功类)
200(成功):已成功处理请求
201(已创建):添加数据成功
202(接受)
204(无内容):请求处理成功,但没有任何资源返回客户端,客户端不会有响应

3开头(重定向类)
301:永久性重定向
302:临时性重定向。常用于登录成功后的跳转(f12中的location可以看到跳转的目标url)
303:类似301,302,不用深入了解
307:和302等效

4开头(客户端错误类)
400(错误请求):服务器不理解请求的语法
401(未授权):表示发送的信息需要有通过HTTP认证的授权信息。出现于客户端无授权信息时,访问受到密码等保护页面的情况
403(禁止):服务器拒绝了请求
404(未找到):服务器找不到请求网页,即客户端给的地址无资源
405(方法未允许):提示客户端所使用的请求方法(GET/POST之类)对某些特定的资源不允许使用
406(不匹配):请求资源的MIME类型与客户端请求中的Accept头中类型不匹

5开头(服务器错误类)
500(内部服务器错误):服务器遇到错误,如web应用崩溃
501(尚未实施):服务器不支持当前请求所需的某功能
502(错误的网关):服务器作为网关或代理,从上游服务器收到无响应
503(服务器无法获得):服务器停机维护或超负荷
504(网关超时):扮演网关或代理的服务器响应超时。和502一样大概率是web服务器故障导致的
505(HTTP版本不支持):服务器不支持请求所用的HTTP协议版本
506(变体协商):服务器存在内部配置错误
507(存储错误):服务器无法存储请求所需内容。一般是数据库出问题了

状态描述

用来描述请求状态
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值