文档章节

利用抓包工具Fiddler分析post和get对http请求、响应的区别。

o
 osc_y8yehimr
发布于 2019/03/20 21:19
字数 1217
阅读 48
收藏 0

精选30+云产品,助力企业轻松上云!>>>

    

被面试官问到关于post和get的区别,由于只是使用,没有思考,所以答的一塌糊涂,所以利用抓包工具来从http的请求和响应来具体分析,做做笔记。

 

扩展部分参考博客:https://www.cnblogs.com/logsharing/p/8448446.html

 

实验工具:1.tomcat服务器

        2.Fiddler抓包工具

 

实验步骤:

1.启动Fiddler抓包工具

image

由于正在更新eclipse插件,所以可以看到eclipse大量的连接

 

2.打开tomcat服务器

image

 

3.打开网页进入localhost:8080

image

4.然后在Developer Quick Start下通过Examples测试

image

5.点击第一个servlets测试之后,点击下面的Request Headers的执行

image

6.你在网页上将看到

image

7.然后回到fiddler界面就可以看到这个过程

image

image

8.但是因为我们要测试的是post和get,所以重新回到Tomcat下的example界面,去执行

image

9.输入名字后点击提交

image

10.回来查看对接的细节。

image

上面的http请求数据

请求行:

POST http://localhost:8080/examples/servlets/servlet/RequestParamExample HTTP/1.1

前面的post指的是请求的方式,以post的方式去提交数据,后面跟的是请求的地址路径,也就是访问的地方,最后的HTTP/1.1是http协议的版本。

 

请求头:

Host: localhost:8080

主机地址
      Connection: keep-alive

Keep-Alive 保持连接
      Content-Length: 30

内容、数据长度
      Cache-Control: max-age=0

对缓存的操作
      Origin: http://localhost:8080
      Upgrade-Insecure-Requests: 1
      DNT: 1
      Content-Type: application/x-www-form-urlencoded

提交的数据类型。经过urlencoding编码的form表单的数据
      User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3641.400 QQBrowser/10.4.3284.400

用户代理 向服务器表明,当前来访的客户端信息。 可以进行安卓/pc/ios区分
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

客户端向服务器端表示,我能支持什么类型的数据。
      Referer: http://localhost:8080/examples/servlets/servlet/RequestParamExample

真正请求的地址路径,全路径
      Accept-Encoding: gzip, deflate, br

压缩算法 当客户端请求大数据时,服务器端先压缩再发送给客户端,3种压缩方式
      Accept-Language: zh-CN,zh;q=0.9

支持语言格式

 

请求体:(浏览器真正发送给服务器的数据)

firstname=Haim&lastname=Edward

发送的数据呈现的是key=value ,如果存在多个数据,那么使用 &,使用ket=value,服务器解析方便

 

再看http响应数据解析

响应行:

HTTP/1.1 200 OK

3个数据对应着,协议版本  状态码  以及交互的结果code(code对应前面的状态码)

响应头:

Server: Apache-Coyote/1.1

服务器是哪一种类型
      Content-Type: text/html;charset=UTF-8

服务器返回给客户端你的内容类型,utf-8编码
      Content-Length: 713

返回的数据长度,下面的html标签内的数据也要计算
      Date: Wed, 20 Mar 2019 12:45:45 GMT

通讯的日期,响应的时间

响应体:

即整个html标签

 

那么post的数据有了,怎么去测试get请求呢?

很简单,get请求的使用方式之一,就是在路径后跟上?和数据,所以在原先测试网址的后面输入“?firstname=Haim&lastname=Edward”即可

image

image

 

于是发现了区别,与post的对比总结

1.首先,请求方式就变了,从post变成了get

2.请求的路径边了,因为我们就是通过在url后面跟上数据,才实现的get请求,post在url后是不跟任何数据的。

3.谷歌后发现,post中数据是以流的方式写过去的,而get带数据的方式是在地址栏上添加。

4.因为第3点,导致get方法会把数据放置在url中,所以存在安全隐患

5.仍然因为第3点,因为是在地址栏上拼接的数据,所以get方法能携带的数据有限,只有1kb大小,而post因为以流的方式写数据,所以数据大小没有限制。

6.也因为post请求用流的方式写数据,所以post请求还多了一个content-Length的头来声明数据的长度。

7.并且因为post以流的方式写数据,所以跟get后面用红色圈起来的那个地方不同,会出现携带的数据。

 

扩展:

1.关于传输效率的问题,get会把http header和data一起发送出去,服务器响应200。而post方式,会先发送header,服务器相应100,然后浏览器再发送data,服务器响应200.

2.但上述的情况,在网络好的情况下,发1次包和2次包的时间差别基本可以忽略不计,而网络差的情况下,两次包的tcp在验证数据包完整性上有巨大的优点。

上一篇: Latex Notes
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

Pycharm文件打开方式

Pycharm修改文件默认打开方式 新下载了一个Pycharm,建了个小demo,期间产生了一个sqlite3文件,由于是第一次打开,就弹出选择打开方式的对话框,手一块直接点了个Text,然后就乱码了: 那我...

osc_fi9eaftu
13分钟前
8
0
微信域名检测中反应速度的重要性

随着微信域名检测的普及,越来越多的人重视这方面有个客户是这样跟我说的,他现在用的那个检测有频率限制 最快只能一秒检测一个, 并发多的时候是不能边跳转边检测的, 只能写到计划任务里面...

mkapi01
14分钟前
10
0
状压dp大总结1 [洛谷]

前言 状态压缩是一种\(dp\)里的暴力,但是非常优秀,状态的转移,方程的转移和定义都是状压\(dp\)的难点,本人在次总结状压dp的几个题型和例题,便于自己以后理解分析状态和定义方式 状态压缩...

osc_s28jz759
15分钟前
17
0
aspnet core 2.1中使用jwt从原理到精通一

目录 原理; 根据原理使用C#语言,生成jwt; 自定义验证jwt; 使用aspnetcore 中自带的类生成jwt; 学有所得 了解jwt原理; 使用C#轻松实现jwt生成和验证 原理 jwt对所有语言都是通用的,只要...

osc_1ls4yaq1
16分钟前
6
0
github上DQN代码的环境搭建,及运行(Human-Level Control through Deep Reinforcement Learning)conda配置

最近师弟在做DQN的实验,由于是强化学习方面的东西,正好和我现在的研究方向一样于是我便帮忙跑了跑实验,于是就有了今天的这个内容。 首先在github上进行搜寻,如下图: 发现第一个星数最多...

osc_252iaxru
17分钟前
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部