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

news2024/11/25 23:00:23

目录

一.  HTTP 协议

1. HTTP协议是什么

2. HTTP协议的基本格式

 HTTP请求

首行 

                GET和POST方法:

                其他方法 

                经典面试题:

                URL

Header(请求报头)部分

空行 

​HTTP响应

         状态码总结:

二、Fiddler的用法

        1.Fidder的安装

         2.Fidder的使用


一.  HTTP 协议

1. HTTP协议是什么

  • HTTP(Hypertext Transfer Protocol)是一种用于在计算机网络中传输超文本的协议。它是 Web 上数据传输的基础,支持客户端和服务器之间的通信。HTTP 以请求-响应模式工作,客户端发送一个请求给服务器,服务器则返回一个响应作为回应。
  • HTTP使用URL(Uniform Resource Locator)来标识要请求的资源,常用的资源包括HTML文档、图像、视频、音频文件等。请求由首行、请求头部、空行和正文组成。响应由首行、响应头部、空行和正文组成。
  • HTTP协议通常使用TCP/IP作为传输协议,通过端口号80进行通信。它还可以通过HTTPS(HTTP Secure)协议进行安全通信,使用加密的SSL/TLS进行数据传输,一般使用端口号 443。
  •  总的来说,HTTP是互联网上数据传输的基础,它在客户端和服务器之间传递请求和响应,使得我们能够浏览网页、发送电子邮件、下载文件等。

2. HTTP协议的基本格式

当我们在浏览器中输入一个 搜狗搜索的 " 网址 " (URL) 时 , 浏览器就给搜狗的服务器发送了一个 HTTP 请求, 搜狗的服务器返回了一个 HTTP 响应 

 下图就是HTTP协议的格式:

 HTTP请求可以分成四个部分:

1.首行

2.请求报头(header)

3.空行

4.正文(body)

HTTP响应也可以分成四个部分:

1.首行

2.响应报头(header)

3.空行       

4.正文(body)

下面就是一个HTTP请求: 

 HTTP请求

首行 

方法+URL+版本号

 GET和POST方法:

 在方法中 GET和POST是最常见的

GET 是最常用的 HTTP 方法. 常用于获取服务器上的某个资源.
在浏览器中直接输入 URL, 此时浏览器就会发送出一个 GET 请求.
另外, HTML 中的 link, img, script 等标签, 也会触发 GET 请求.

  

 GET 请求的特点
首行的第一部分为 GET
URL 的 query string 可以为空, 也可以不为空.
header 部分有若干个键值对结构.
body 部分为空

 POST 方法也是一种常见的方法. 多用于提交用户输入的数据给服务器(例如登陆页面).
通过 HTML 中的 form 标签可以构造 POST 请求, 或者使用 JavaScript 的 ajax 也可以构造 POST 请求.

POST 请求的特点
首行的第一部分为 POST
URL 的 query string 一般为空 (也可以不为空)
header 部分有若干个键值对结构.
body 部分一般不为空. body 内的数据格式通过 header 中的 Content-Type 指定. body 的长度由header 中的 Content-Length 指定.

其他方法 

PUT 与 POST 相似,只是具有幂等特性,一般用于更新
DELETE 删除服务器指定资源
OPTIONS 返回服务器所支持的请求方法
HEAD 类似于GET,只不过响应体不返回,只返回响应头
TRACE 回显服务器端收到的请求,测试的时候会用到这个
CONNECT 预留,暂无使用

经典面试题:

GET 和 POST 之间的典型区别

本质上并没有什么区别,只是使用习惯上有区别:

1.就传递消息而言:

GET 也可以给服务器传递一些信息,GET传递的信息一般都放在query string.

   POST 传递消息则是通过body

2.语义上的差别(使用场景)

  GET 请求 一般是用于从服务器获取数据.

  POST请求一般是用于给服务器提交数据.

3.GET 通常会被设计成幂等的,POST 不要求幂等

  幂等:相同的输入,得到的结果是确定的.

4.GET 可以被缓存的,POST 则一般不能被缓存.

  把请求的结果保存下来,下次请求的时候,就不必真请求了,直接取缓存结果.

 URL

平时我们俗称的 "网址" 其实就是说的 URL (Uniform Resource Locator 统一资源定位符).
互联网上的每个文件都有一个唯一的URL

以下面这个网址为例 

https://v.bitedu.vip/personInf/student?userId=10000&classId=100

  •  https : 协议方案名. 常见的有 http 和 https, 也有其他的类型. (例如访问 mysql 时用的jdbc:mysql )
  • user:pass : 登陆信息. 现在的网站进行身份认证一般不再通过 URL 进行了. 一般都会省略
  •  v.bitedu.vip: 服务器地址. 此处是一个 "域名", 域名会通过 DNS 系统解析成一个具体的 IP 地址.(通过 ping 命令可以看到, v.bitedu.vip 的真实 IP 地址为 118.24.113.28 )
  • 端口号: 上面的 URL 中端口号被省略了. 当端口号省略的时候, 浏览器会根据协议类型自动决定使用哪个端口. 例如 http 协议默认使用 80 端口, https 协议默认使用 443 端口.
  • /personInf/student : 带层次的文件路径.
  • userId=10000&classId=100 : 查询字符串(query string). 本质是一个键值对结构. 键值对之间使用& 分隔. 键和值之间使用 = 分隔.

 Header(请求报头)部分

header 的整体的格式也是 "键值对" 结构. 每个键值对占一行. 键和值之间使用分号分割 

HOST

大概描述了服务器所在的地址和端口

Host 这里的地址和端口,用来描述最终要访问的目标.

这个内容大概率和URL中是一样的,也有一定的情况下是不同的.

Content-Length

表示body中的数据长度

Content-Type

表示请求的body中的数据格式

如果是GET请求,没body,请求中没有上述两个字段.

如果是POST请求,有body,必须要有上述两个字段.

User-Agent(简称UA)

描述了浏览器和操作系统的版本.

现在主要用于区分PC端和移动端.

Referer

当前页面的来源.

如果直接通过地址栏输入地址,直接点击收藏夹,都是没有referer

Cookie

Cookie(中文名“HTTP cookie”或“网络cookie”)是由网站服务器发送到用户浏览器并存储在本地计算机上的小文件,通常用于记录用户的活动和偏好设置,以便在以后的访问中提供更加个性化的体验。Cookie 在网站开发、广告投放和用户追踪等方面,具有很重要的作用。虽然很多人对 Cookie 持有负面看法,但它也是现代 Web 应用的重要组成部分。

通过下面的步骤可以观察到Cookie中的内容:

空行 

 HTTP响应

HTTP/1.1  版本号

200: 状态码

OK: 状态码描述

 状态码总结:

 二、Fiddler的用法

1.Fidder的安装

 找到Fiddler官网

 选择所需版本

然后随意填写进行下载 

 2.Fidder的使用

 进入之后进行如图设置

下面就是我们进行抓包的请求

双击左侧的请求列表中的选项,查看到请求的详细情况.

下面就是我们抓包的响应 

  观察抓包结果,可以看到,当前http请求是一个行文本格式的数据,相比于二进制的数据,用户可以更方便的直接观察.

会发现记事本出现乱码.这是因为,响应数据本来也是行文本数据,但是有的服务器会对响应进行压缩,变成二进制的数据了,如果想要观察到行文书数据,点击下面图片内容

 会看到没有乱码了.

蓝色的说明这是个html页面.这是我们最关注的,其它的请求都是基于这个请求产生.

绿色的是js

黑色的是一些返回数据.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/878131.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

netty学习分享(一)

TCP与UDP TCP 是面向连接的、可靠的流协议,通过三次握手建立连接,通讯完成时要拆除连接。 UDP是面向无连接的通讯协议,UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象 端口号: 端口号用…

软考:中级软件设计师:文件管理,索引文件结构,树型文件结构,位示图,数据传输方式,微内核

软考:中级软件设计师: 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是需要细心准备的 (1…

数学运算1

正确答案:F 你的答案:E 参考答案:最大排列为100 1 99 2 98 3…51 49 50 所以和为999897…1(100-50)因为是一个圈所以,100和50相接,所以等于5000 知识点:数学运算

工作经验总结:RH850中SP、LP、PC寄存器间联系与入栈出栈操作简单整理

一、RH850系列中SP、LP、PC寄存器简介 SP:栈顶寄存器,保存最新栈顶的地址 LP:链接寄存器,保存函数跳转的地址(当没发生调用子函数的操作时候,你可以通过单步调试发现,该寄存器的值不变&#x…

Golang-使用 gvm 进行版本控制

当你想为每个项目切换 go 版本时,gvm (Go Version Manager) 很方便。 这里,我将介绍“如何在Mac上安装gvm”和“如何使用gvm” 使用准备 仅适用于 Mac 的准备工作 按照MacOSX 要求中的说明执行以下命令。 xcode-select --install brew update brew …

JavaFx基础学习【一】:基本认识

一、介绍 JavaFX 是一个开源的下一代客户端应用平台,适用于基于Java构建的桌面、移动端和嵌入式系统。 它是许多个人和公司的共同努力的成果,目的是为开发丰富的客户端应用提供一个现代、高效、功能齐全的工具包。 二、JavaFx应用基本结构 想要开发一款…

浅谈医用IT隔离电源在医院特殊场所接地系统的应用

贾丽丽 安科瑞电气股份有限公司 上海嘉定 201801 【摘要】我们国家大部分医院的临床救治和确诊都是利用了医疗电气类设备和医用的医疗仪器,因此这些地方的接地问题应该引起我们的高度的重视。IT系统主要是利用了中性点没有直接接地的方式,所以可以减少电…

【【verilog 典型电路设计之加法器树乘法器】】

verilog 典型电路设计之加法器树乘法器 加法器树乘法器 加法器树乘法器的设计思想是“移位后加”,并且加法运算采用加法器树的形式。乘法运算的过程是,被乘数与乘数的每一位相乘并且乘以相应的权值,最后将所得的结果相加,便得到了…

日常BUG——微信小程序提交代码报错

😜作 者:是江迪呀✒️本文关键词:日常BUG、BUG、问题分析☀️每日 一言 :存在错误说明你在进步! 一、问题描述 在使用微信小程序开发工具进行提交代码时,报出如下错误: Invalid a…

DDR5内存升级看光威,两款超值DDR5内存条,价格实惠性能强劲

DDR4内存条现在用的人应该占多数,但是时候升级DDR5了,都已经2023年了,国产内存早就崛起了,超值的DDR5内存条选择非常多,特别适合游戏玩家使用,像是光威前段时间推出的两款高端DDR5,神策DDR5 和神…

Java面向对象(内部类)(枚举)(泛型)

内部类 内部类是五大成员之一(成员变量、方法、构造方法、代码块、内部类); 一个类定义在另一个类的内部,就叫做内部类; 当一个类的内部,包含一个完整的事物,且这个事务不必单独设计&#xf…

折线分割平面

一、题目 我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。 Input 输入…

计算机竞赛 python 机器视觉 车牌识别 - opencv 深度学习 机器学习

1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于python 机器视觉 的车牌识别系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:3分 🧿 更多资…

Docker自动化部署安装(十)之安装SonarQube

这里选择的是: sonarqube:9.1.0-community (推荐使用) postgres:9.6.23 数据库(sonarqube7.9及以后便不再支持mysql,版本太低的话里面的一些插件会下载不成功的) 1、docker-sonarqube.yml文件 version: 3 services:sonarqube:container_name: sonar…

打造专属企业展示小程序

在当今的数字化时代,企业展示小程序已经成为了推广企业形象和吸引客户的重要工具。而如何打造一个专属的企业展示小程序呢?下面将带您一步步操作,通过乔拓云网来实现这一目标。 首先,您需要注册登录乔拓云网并进入操作后台。在乔拓…

如何修复损坏的DOC和DOCX格式Word文件?

我们日常办公中,经常用到Word文档。但是有时会遇到word文件损坏、无法打开的情况。这时该怎么办?接着往下看,小编在这里就给大家带来最简单的Word文件修复方法! 很多时候DOC和DOCX Word文件会无缘无故的损坏无法打开,一…

String、StringBuffer、StringBuilder三者的异同?

String字符串 不可变的字符序列在 jdk1.8,我们底层用 char [ ] 存储在 jdk 17,我们底层用 byte [ ] 存储 StringBuffer字符串缓冲区类 可变的字符序列,线程安全的(synchronized),效率低在 jdk1.8&#xf…

中大型纯电动旗舰轿车银河E8申报成功,定位“旗舰”,可年内交付

根据工信部的公告,吉利旗下的银河新能源品牌近日成功完成中大型纯电轿车银河 E8的申报。这款令人期待的电动轿车在外观和内饰方面都备受关注。在之前的报道中,我们得知银河 E8拥有时尚、动感的外观设计,线条流畅,给人一种科技感十…

关于vue,记录一次修饰符.stop和.once的使用,以及猜想。

内置指令 | Vue.js 在vue的api里&#xff0c;关于v-on有stop和once两个事件标签。 .stop - 调用 event.stopPropagation()。.once - 最多触发一次处理函数。 原有主要代码和页面效果 &#xff08;无stop和once&#xff09;: ...<div class"div" click"di…