HTTP 响应解析是理解 Web 通信的关键步骤。HTTP 响应由状态行、响应头(Headers)和响应体(Body)三部分组成。下面从结构说明和实际解析示例两个角度来讲解。
一个典型的 HTTP 响应格式如下:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 137
Connection: keep-alive
<html>
<head><title>Hello</title></head>
<body>Hello World</body>
</html>
HTTP/1.1 200 OK
含义:
HTTP/1.1:协议版本200:状态码OK:状态描述常见状态码:
200 OK:成功301 / 302:重定向404 Not Found:资源不存在500 Internal Server Error:服务器错误Content-Type: text/html; charset=UTF-8
Content-Length: 137
作用:
Content-Type:内容类型Content-Length:响应体长度Set-Cookie:设置 CookieCache-Control:缓存策略\r\n
用于分隔 Header 和 Body(必须存在)。
<html>...</html>
204 No Content)浏览器收到 HTTP 响应后:
Content-Type 决定如何渲染fetch('/api/data')
.then(res => {
console.log(res.status); // 状态码
console.log(res.headers.get('Content-Type'));
return res.json(); // 解析响应体
})
.then(data => {
console.log(data);
});
const http = require('http');
http.get('http://example.com', res => {
console.log('状态码:', res.statusCode);
console.log('响应头:', res.headers);
let data = '';
res.on('data', chunk => data += chunk);
res.on('end', () => {
console.log('响应体:', data);
});
});
import requests
r = requests.get('http://example.com')
print(r.status_code)
print(r.headers)
print(r.text) # 文本
print(r.content) # 二进制
假设收到原始字符串:
HTTP/1.1 200 OK\r\n
Content-Type: application/json\r\n
Content-Length: 27\r\n
\r\n
{"msg": "hello", "code": 0}
解析步骤:
\r\n 分割✅ 响应体可能:
Transfer-Encoding: chunked)Content-Encoding: gzip)Content-Type 解析✅ 状态码 ≠ 业务成功
例如:200 OK 但返回 { "error": "invalid" }
HTTP 响应解析 = 读取状态行 → 解析响应头 → 根据 Content-Type 解析响应体
如果你有具体场景(如浏览器、后端、抓包、面试、手写解析器),可以告诉我,我可以针对性讲解。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。