本文系统介绍了HTTP协议的工作原理及应用要点。主要内容包括:HTTP在网络分层模型中的位置及其请求-响应机制;HTTP报文结构和常用方法(GET/POST等);HTTPS的安全特性及与HTTP的区别;Fiddler抓包工具的使用方法,包括请求/响应报文分析、修改及自动应答功能。文章详细解析了HTTP协议从基础原理到实际应用的关键知识点,为理解Web通信机制提供了全面指导。

目录

一、HTTP协议工作原理

1.1 网络分层模型

1.2 什么是HTTP协议

1.3 HTTP协议的特点

二、HTTPS介绍

2.1 HTTPS协议详解

三、HTTP请求报文、响应报文

3.1 HTTP请求报文​编辑

3.2 HTTP请求方法:GET / POST

3.3 HTTP响应报文

3.3.1 HTTP响应状态码

3.3.2 Content-Type参数

四、Fiddler抓包

4.1 Fiddler抓包原理

4.2 Fiddler基本设置

4.2.1 过滤与捕获特定请求

4.2.2 四大主要功能介绍

4.2.3 修改请求报文

4.2.4 修改响应报文

4.2.5 自动应答


一、HTTP协议工作原理

1.1 网络分层模型

应用层:采用何种协议

表示层:数据形式和标准的格式转换——图片、文字、声音

会话层:何时建立起连接、连接保持多久

传输层:管理2个节点之间的数据传输。负责可靠传输

网络层:地址管理和路由选择,经过哪个路由更近更快的传递到目标地址。

数据链路层:负责数据帧和比特流之间的转换

物理层:比特流和电子信号之间的切换,0和1代表电压的高低,灯光的亮灭

1.2 什么是HTTP协议

中文名:超文本传输协议(Hyper Text Transfer Protecal),http可以从web服务器上将信息快速可靠的传送到web浏览器上

作用是:规定服务器和浏览信息传递规范

HTTP协议是一个简单的请求→响应协议

        一个请求(request)只能有一个响应(response)

        响应(response)是被动的,不能主动发起

它是建立在TCP协议之上(即由TCP协议来负责数据传输)

HTTP默认端口为80,HTTPS默认端口是443

HTTP协议版本有HTTP/0.9、HTTP/1.0、HTTP/1.1、HTTP/2、HTTP/3,目前以协议HTTP/1.1为主

HTTP 0.9(GET):原型版本,功能简陋,只有一个命令GET,服务器只能回应HTML格式字符串

HTTP 1.0(新增POST、HEAD):短链接,每个TCP连接只能发送一个请求,发送数据完毕,连接就关闭,如果还要请求其他资源,就必须再创建一个连接

HTTP 1.1(新增Host头——支持虚拟主机):长链接,引入了持久连接,即TCP连接默认不关闭,一次TCP连接可以多次请求

1.3 HTTP协议的特点

二、HTTPS介绍

2.1 HTTPS协议详解

HTTPS 是一种应用层协议,是一种透过计算机网络进行安全通信的传输协议。
HTTPS 经由 HTTP 进行通信,但是在 HTTP 的基础上引入了一个加密层,使用 SSL/TLS 来加密数据包
HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
HTTPS 默认工作在 TCP 协议443端口

HTTP HTTPS
无证书 有证书
明文传输 密文传输
80端口 443端口
无身份认证 有身份认证
无完整性校验 有完整性校验

学习参考

三、HTTP请求报文、响应报文

学习参考

3.1 HTTP请求报文

3.2 HTTP请求方法:GET / POST

  1. GET 向特定的资源发出请求。
  2. POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立换已有资源的修改
  3. PUT 向指定资源位置上传其最新内容,如果不存在新增,如果已存在修改成最新,上传文件
  4. DELETE 请求服务器删除 Request-URL所标识的资源
  5. TRACE 回显示服务器收到的请求,主要用于测试或诊断
  6. HEAD 向服务器获取响应信息头中的信息
  7. OPTIONS 返回服务器针对特定资源所支持的HTTP请求方法
  8. CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器

主要的请求方法有:GET、POST、PUT、DELETE

GET方法

        提交数据不安全,数据置于请求行,浏览器地址栏可见;

        URL长度每个浏览器限制数量不同,最长在2000字符以内

        GET方法速度快

        默认的请求方法,不需要提交大量数据、无敏感、保密数据时使用

POST方法

        提交数据安全,数据置于消息主体内,浏览器地址栏不可见

        提交的数据大小没有限制

        POST 方法速度慢

        需要提交大量数据、有敏感、保密数据时使用

3.3 HTTP响应报文

3.3.1 HTTP响应状态码

200 客户端请求成功
301 永久性重定向
302 临时性重定向
403 服务器收到请求,但拒绝提供服务
404 请求的资源不存在
500 服务器发生不可预期的错误

3.3.2 Content-Type参数

Content-Type 叫:是Internet Media Type,互联网媒体类型。存在于 请求中或响应中

如果出现在请求中,则表示:告诉服务端客户端实际发送的数据类型

如果出现在响应中,则表示:告诉客户端服务端实际发送的数据类型

在【请求】中,常见的数据类型有:

        application/x-www-form-urlencoded → 以 “ 键—值 ” 对的方式组织的数据

        - multiple/form-data → 一般需要上传文件的表单则用该类型

        - application/json → JSON字符串格式提交数据

四、Fiddler抓包

4.1 Fiddler抓包原理

Fiddler是通过改写HTTP代理,让数据从它那通过,来监控并且截取到数据
在打开Fiddler它的那一瞬间,它就已经设置好了浏览器的代理了
当你关闭的时候,它又帮你把代还原了,所以一般不需要手动设置。

Fiddler 是位于客户端和服务器端之间的HTTP代理,也是目前最常用的抓包工具之一 ,能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的 “ 进出 ” Fiddler的数据(如cookie,html,js,css等资源)

默认代理地址:127.0.0.1 端口:8888

个人理解:fiddler是一个抓包工具,当浏览器访问服务器会形成一个请求,此时,fiddler就处于请求之间,当浏览器发送请求会先经过fiddler,然后再到服务器,当服务器有数据返回浏览器时也会经过fiddler,然后数据才会在浏览器中显示,这样一个过程,fiddler就抓到了请求和响应数据的整个过程。

4.2 Fiddler基本设置

在首次使用时需信任Fiddler根证书:进入菜单栏的Tools > Options > HTTPS,勾选Decrypt HTTPS traffic并点击Actions > Trust Root Certificate

确保设备与抓包目标在同一网络。对于移动端抓包,需在手机Wi-Fi设置中配置代理:服务器地址为电脑的本地IP(通过命令行输入ipconfig获取),端口默认为8888。手机浏览器访问http://<电脑IP>:8888下载并安装Fiddler证书。

4.2.1 过滤与捕获特定请求

过滤器,勾选Use Filters以启用过滤功能。

        Filters → Hosts → No zone filter → Show only the following Hosts,在文本框输入要抓包的主机

多个域名使用“;”分割。Fiddler默认会筛选设置的Host,只显示设置中的Sessions。

4.2.2 四大主要功能介绍

  1. Inspector            查看请求报文、查看响应报文
  2. AutoResponder          设置自动响应
  3. Composer          构造请求
  4. Breakpoint         请求前断点——修改请求参数;请求后断点——修改响应报文

接口请求调试

假设您用工具(postman)做接口测试,按照接口文档要求构造请求参数。发现接口调用不能成功。开发告诉你程序不会有错。那么只有一种可能就是你构造请求出了问题。如何排查问题?——抓包分析

Inspector面板,请求报文和响应报文

4.2.3 修改请求报文

场景:假设前台页面限制某个输入框只能输入20个字符,需要测试接口该输入框长度超过20个字符接口是怎么处理的?

请求前断言功能

4.2.4 修改响应报文

场景:假设你测试某个UI功能,其中某个字段的长度最大值为100,但是你的请求获取到的内容都很小,无法看到字段长度很长时的界面的展示情况。那么,你可以修改响应报文,把返回的内容自行修改

请求后断言功能

4.2.5 自动应答

场景:前端工程师设计好界面后,想测试一下页面效果。但是后端工程师接口功能还未完成,无法调用。此时,前端工程师可以把某些请求设置为自动应答,响应返回本地测试数据

自动应答,AutoResponder功能

可以加入正则表达式来过滤css、jpg、png等请求,表达式为:

REGEX:(?insx) / [ ^ \ ? / ] * \ .(css|ico|jpg|png|gif|bmp|wav|js|jpeg)(\?.*)?$

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐