fiddler的用法和HTTP协议的基本格式

目录

fiddler的用法

什么是fiddler

对fiddler进行安装

fiddler的配置

HTTP请求和回应

请求

HTTP协议的基本格式

回应

​编辑

首行

请求头header

user-Agent(简称UA)

Referer


fiddler的用法

什么是fiddler

fiddler是一个抓包工具,fiddler是专门用来对http和tttps抓包的,从抓来的包里我们可以知道http协议的基本格式

对fiddler进行安装

fiddler官网

找到Fiddler Classic,这个版本免费,然后点击Try Free

填好邮箱和国家进行下载就行 

fiddler的配置

打开fiddler后,点击Tools中的options,然后选择HTTPS,将所有条件都选中 

此时会要你下载一个证书,点击yes进行下载,之后就可以正常使用了

HTTP请求和回应

 此时在浏览器上打开一个搜狗主页,fiddler的左边就会出现对应的包,将其选中

 

请求

然后右上角就是请求,先点击Raw,就可以看到请求格式和内容,然后点击View in Nottped,在记事本中观看

 

首先可以看到,这是一个文本数据,是一个完整的HTTP请求

所谓的HTTP请求,其实就是通过代码,构造一个符合HTTP格式要求的自字符串,让tcp往socket中写就行了

一个HTTP请求数据,包含了4个部分:

首行,header,空行,正文(body)

 空行是header结束的标记,而正文是空行后面的内容,有的时候可以没有,这里就是没有

HTTP协议的基本格式

回应

右下角是回应,先点击raw,然后可以看到是二进制文本

 然后点击上面的Response进行解析,就得到了回应的http

 

首行

 

GET是HTTP的方法,描述了这个HTTP请求想干啥,HTTP协议中有

很多种方法,不同的方法,表示不同的语义

 

 在这里咱们一般看到的请求大部分都是GET请求,小部分是POST请求,而其余的则是很少见了

当我们登录或者上传文件时就能看到POST请求

1.GET习惯上用来表示获取一个数据,POST用来表示提交一个数据

2.GET一般没有body,需要携带数据则放到URL中,POST一般有body

3.GET请求通常会设计成幂等的,POST则无要求

幂等就是,每次发送一个请求,得到的回复是相同的值,设计成幂等之后,这样的请求就可以缓存了

4.GET可缓存的(前提是幂等),POST则不能

5.GET请求可以被浏览器收藏,POST不能

GET和POST没有本质上的区别,但是我们在使用的习惯上存在区别,这也是一个经典面试题:

GET和POST表示的是不同的语义,但是实际上也并非需要严格遵守

http方法的语义,只有一种建议,我们实际使用的时候,不一定非得遵守

对于body,有没有的问题也不是绝对的,GET也可以有,POST也可以没有,这是比较少见

 

对于后面的URL来说,结构大概是这几个部分

 

 这个就是使用的http版本号了

 

请求头header

 键值对结构,每个键值对占一行,键和值之间,使用冒号空格来分割

这样的键值对可以有N行,会用空行作为结束标记

header中的键值对,大部分都是HTTP协议规定的,当然这里也是可以添加自定义的键值对

 Host属性,描述了浏览器这个请求要访问的服务器是谁,这里不仅只写地址,也写端口号

 大多数情况下,Host中的值,和URL中的域名是一致的但是当我们访问的服务器不是直接访问,而是通过"代理"来访问,此时的Host和URL就可能不一致了

Content-Length:描述了body的长度(字节)

Content-Type:描述了body的数据格式

 body:

 可以发现,此时的body就是css

除了text/css,还有一些别的写法:

application/json 

application/x-www-form-urlencoded

text-html

application/javascript

image/jpg

img/png

type是哪种,对应的body就是哪种格式

比如是application/json,body就是一个js

user-Agent(简称UA)

主要就是描述了浏览器是啥版本,系统是啥版本

 操作系统版本:win10系统64位

可能win11和win10是一样的内核版本,所以win11系统发送这里也会显示win10

 浏览器版本:Chrome/113.0.0.0

Referer

描述了当前这个页面,从哪个页面跳转来

如果直接在地址栏输入url(或者收藏夹点击),此时请求中没有referer

但如果是从搜狗中输入,就可以看到referer就是sougou主页

 

Cookie的值也是键值对,键值对之间使用;分割,键和值 之间使用=分割

这里的键值对是程序员自定义的数据,不同的网站就有不同的键值对,也就有不同的含义和用途了,所以具体是啥含义咱也不知道.

Cookie的本质,是浏览器在本地储存 用户自定义数据的一种关键机制

Cookie从哪里来?

从服务器来,当我们的浏览器访问服务器的时候,服务器就会在HTTP响应中,通过Set-Cookie字段,把Cookie的键值对返回给浏览器,浏览器收到这个数据,就会在本地存储

Cookie到哪里去?

会在下次请求的时候,把Cookie带给服务器,Cookie在浏览器这边只能算是暂存,真正要让这个数据发挥作用,还得由服务器来使用

Cookie有啥用?

是浏览器本地储存数据的机制

任何想存的数据都行(前提是得是字符串)

由于Cookie存储空间有限,一般也不会用Cookie存太大的数据

 

由于客户端有很多,每个客户端提供的服务可能还不一样,因此服务器就可以通过cookie进行区分

比如客户端在登录的时候,服务器就识别好客户端的角色,把角色信息返回给浏览器,在cookie中保存,后续客户端访问的时候,带着这个cookie就行了,此时服务器之间就自动这个客户端是干啥的了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值