上一篇
http通信数据
- 行业动态
- 2025-04-26
- 5
HTTP通信数据含请求与响应,请求含方法、URL、头部,响应含状态码、头部及数据,数据明文传输,存安全风险,HTTPS通过TLS加密增强
HTTP通信数据详解
HTTP请求结构
HTTP请求由以下三部分组成:
- 请求行:包含请求方法(GET/POST等)、URL路径、协议版本
- 请求头部:键值对形式的元信息(如
Host
、User-Agent
) - 请求体:携带POST/PUT等方法的数据(如表单、JSON)
示例请求(GET) | 说明 |
---|---|
GET /api/user HTTP/1.1 | 请求行 |
Host: example.com | 请求头 |
User-Agent: Mozilla/5.0 | 请求头 |
Accept: / | 请求头 |
Connection: keep-alive | 请求头 |
“ | 空行分隔头部和体 |
HTTP响应结构
HTTP响应包含:
- 状态行:协议版本、状态码、状态描述
- 响应头部类型、缓存策略等元信息
- 响应体:HTML/JSON/图片等实际数据
示例响应(200 OK) | 说明 |
---|---|
HTTP/1.1 200 OK | 状态行 |
Content-Type: text/html | 响应头 |
Content-Length: 387 | 响应头 |
Server: nginx | 响应头 |
“ | 空行分隔头部和体 |
<html>...</html> | 响应体 |
常见状态码分类
类别 | 状态码范围 | 含义 | 典型场景 |
---|---|---|---|
1xx | 100-199 | 信息响应 | 继续请求、切换协议 |
2xx | 200-299 | 成功 | GET返回资源、POST创建成功 |
3xx | 300-399 | 重定向 | 永久/临时跳转 |
4xx | 400-499 | 客户端错误 | 404未找到、403禁止访问 |
5xx | 500-599 | 服务端错误 | 502网关错误、504超时 |
关键头部字段解析
通用头部字段
字段名 | 作用 | 示例值 |
---|---|---|
Host | 指定服务器域名 | example.com:8080 |
User-Agent | 客户端身份标识 | curl/7.68.0 |
Accept | 可接受的响应内容类型 | application/json |
Cookie | 客户端携带的Cookie数据 | sessionid=abc123 |
响应专用字段
字段名 | 作用 | 示例值 |
---|---|---|
Content-Type | 响应体MIME类型 | application/pdf |
Set-Cookie | 设置服务端Cookie | token=xyz; Path=/ |
Location | 重定向地址 | https://new.domain/ |
数据抓包示例
原始TCP流片段:
15:46:23.123 -> 192.168.1.100:80
GET /images/logo.png HTTP/1.1
Host: website.com
Accept-Encoding: gzip
解析后结构:
| 字段层级 | 内容 |
|—————-|——————————-|
| 请求方法 | GET |
| URL路径 | /images/logo.png |
| 协议版本 | HTTP/1.1 |
| Host头部 | website.com |
| 编码支持 | gzip |
问题与解答
Q1:状态码301和302有什么区别?
A1:
- 301 Moved Permanently:表示资源永久迁移,浏览器会缓存新地址,后续直接访问新URL。
- 302 Found:表示临时重定向,浏览器不缓存跳转关系,每次都会重新请求原地址。
Q2:如何查看HTTP请求中的User-Agent信息?
A2:
- 浏览器开发者工具:在Chrome/Firefox中按F12,切换到”Network”标签,点击具体请求即可查看
User-Agent
。 - 服务器端日志:Nginx/Apache等服务器日志会记录完整的请求头信息。
- 抓包工具:使用Wireshark/Fiddler捕获HTTP请求,直接解析
User-Agent
字段