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

HTTP协议格式

HTTP是⼀个⽂本格式的协议.可以通过Chrome开发者⼯具或者Fiddler抓包,分析HTTP请求/响应的细节.

抓包工具的使用

以Fiddler为例.

• 左侧窗⼝显⽰了所有的HTTP请求/响应,可以选中某个请求查看详情.

• 右侧上⽅显⽰了HTTP请求的报⽂内容.(切换到Raw标签⻚可以看到详细的数据格式)

• 右侧下⽅显⽰了HTTP响应的报⽂内容.(切换到Raw标签⻚可以看到详细的数据格式)

• 请求和响应的详细数据,可以通过右下⻆的View in Notepad 通过记事本打开.

抓包工具的原理

Fiddler相当于⼀个"代理".

浏览器访问sogou.com时,就会把HTTP请求先发给Fiddler,Fiddler再把请求转发给sogou的服务 器.当sogou服务器返回数据时,Fiddler拿到返回数据,再把数据交给浏览器.

因此Fiddler对于浏览器和sogou服务器之间交互的数据细节,都是⾮常清楚的.

抓包结果

以下是⼀个HTTP请求/响应的抓包结果.

HTTP请求

• ⾸⾏:⽅法+url+版本

• Header:请求的属性,冒号分割的键值对;每组属性之间使⽤\n分隔;遇到空⾏表⽰Header部分结束

• Body:空⾏后⾯的内容都是Body.Body允许为空字符串.如果Body存在,则在Header中会有⼀个 Content-Length属性来标识Body的⻓度;

HTTP响应

• ⾸⾏:版本号+状态码+状态码解释

• Header:请求的属性,冒号分割的键值对;每组属性之间使⽤\n分隔;遇到空⾏表⽰Header部分结束

• Body:空⾏后⾯的内容都是Body.Body允许为空字符串.如果Body存在,则在Header中会有⼀个Content-Length属性来标识Body的⻓度;如果服务器返回了⼀个html⻚⾯,那么html⻚⾯内容就是在body中.

协议格式总结

一、请求格式

  1. 请求行
  • 包含请求方法(如 GET、POST、PUT 等)、请求的资源路径和 HTTP 版本。例如:"GET /index.html HTTP/1.1"。
  1. 请求头
  • 由一系列键值对组成,如"Host"表示请求的主机名,"User-Agent"表示发出请求的客户端信息等。

  • 每个请求头占一行,格式为"头字段名: 值"。

  1. 空行
  • 用于分隔请求头和请求体。
  1. 请求体
  • 对于某些请求方法(如 POST),会包含要提交的数据。

二、响应格式

  1. 状态行
  • 包含 HTTP 版本、状态码和状态描述。例如:"HTTP/1.1 200 OK"。
  1. 响应头
  • 与请求头类似,也是一系列键值对,如"Content-Type"表示响应内容的类型,"Content-Length"表示响应内容的长度等。
  1. 空行
  • 分隔响应头和响应体。
  1. 响应体
  • 服务器返回的具体内容,如 HTML 页面、JSON 数据等。
相关推荐
wdeok9 小时前
Socket编程UDP-简单的聊天室
网络·网络协议·udp
Thanks_ks11 小时前
HTTP 请求方法与 RESTful 接口设计:GET 和 POST 到底怎么用
http·api·restful·状态码·get·post·接口设计
LK_072 天前
【FastAPI】基础篇 01|开始之前:API、HTTP 与 FastAPI 到底是什么
网络协议·http·fastapi
阿星_2 天前
pydio登陆不了分析问题
网络协议·http·https
Joy T2 天前
Gzip 压缩原理与实践:HTTP 响应压缩、性能收益与工程配置
网络·网络协议·http
博客zhu虎康3 天前
实现局域网P2P通信:内网发送消息
网络·网络协议·p2p
xixingzhe24 天前
AI 对话打字机效果:SSE 和 HTTP 的区别与适用场景
网络·网络协议·http
叼烟扛炮4 天前
Linux 学习笔记(五十一):数据链路层与 ARP 协议——局域网寻址与黑客骗局
linux·网络·网络协议·php·tcpdump
沫璃染墨5 天前
从零入门计算机网络系列(十四):TCP报文与字节流本质——从数据封装到报文边界
linux·服务器·网络·网络协议·tcp/ip·tcp
byte轻骑兵5 天前
【LMP】规范精讲[13]: 参数的户口本、公钥的集装箱与出厂的兜底值
人工智能·网络协议·人机交互·lmp·蓝牙链路管理