当前位置: 首页 > news >正文

HTTP报文详解

HTTP 报文详解

HTTP(Hypertext Transfer Protocol,超文本传输协议)是 Web 通信的基础协议,用于客户端(如浏览器)和服务器之间交换数据。HTTP 报文是 HTTP 协议交互的信息载体,分为两种类型:请求报文(由客户端发送)和响应报文(由服务器返回)。报文是纯文本格式(HTTP/1.1 和早期版本),由 ASCII 字符组成,便于阅读和调试。

HTTP 报文的基本结构相同,由三部分组成:

  • 起始行(Start Line):描述请求或响应的基本信息。
  • 首部字段(Headers):键值对形式,提供元数据(如内容类型、长度、缓存等)。
  • 空行(CRLF):分隔首部和主体,表示首部结束。
  • 主体(Body,可选):实际传输的数据(如 HTML、JSON、图片等)。
1. 请求报文(Request Message)

客户端向服务器请求资源时发送。

格式

<方法> <请求URL> <协议版本> <首部字段名>: <字段值> ... <CRLF> // 空行 <主体数据> // 可选

起始行(Request-Line)

  • 方法(Method):表示对资源的操作。常见方法:

    方法描述是否有主体
    GET获取资源(最常用)
    POST提交数据(如表单)
    PUT上传资源(替换)
    DELETE删除资源
    HEAD只获取响应头(不返回主体)
    OPTIONS查询支持的方法
    TRACE回环测试
    PATCH部分更新资源
  • 请求URL(Request-URI):资源路径,可包含查询参数(如/index.html?id=1)。

  • 协议版本:通常HTTP/1.1HTTP/2(HTTP/2+ 使用二进制帧)。

示例(GET 请求,无主体):

GET /index.html HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Accept: text/html,*/* Accept-Encoding: gzip, deflate Connection: keep-alive

示例(POST 请求,有主体):

POST /login HTTP/1.1 Host: www.example.com Content-Type: application/x-www-form-urlencoded Content-Length: 28 username=admin&password=123
2. 响应报文(Response Message)

服务器处理请求后返回。

格式

<协议版本> <状态码> <原因短语> <首部字段名>: <字段值> ... <CRLF> // 空行 <主体数据> // 可选

起始行(Status-Line)

  • 协议版本:同上。

  • 状态码(Status Code):三位数字,表示结果。

    分类代码范围描述常见示例
    1xx100-101信息提示100 Continue
    2xx200-206成功200 OK, 204 No Content
    3xx300-307重定向301 Moved Permanently, 304 Not Modified
    4xx400-451客户端错误400 Bad Request, 404 Not Found, 403 Forbidden
    5xx500-505服务器错误500 Internal Server Error, 503 Service Unavailable
  • 原因短语(Reason Phrase):人类可读描述,如 “OK”。

示例(成功响应):

HTTP/1.1 200 OK Date: Mon, 06 Jan 2026 12:00:00 GMT Server: Apache/2.4.51 Content-Type: text/html; charset=UTF-8 Content-Length: 1234 Connection: keep-alive <html><body>Hello World!</body></html>

示例(404 错误):

HTTP/1.1 404 Not Found Content-Type: text/html Content-Length: 256 <html><body><h1>404 Not Found</h1></body></html>
3. 首部字段(Headers)

首部是键值对,提供附加信息。分为:

  • 通用首部:请求和响应均可(如 Date、Connection)。
  • 请求首部:如 Host、User-Agent、Accept、Cookie。
  • 响应首部:如 Server、Location(重定向)、Set-Cookie。
  • 实体首部:描述主体,如 Content-Type、Content-Length、Content-Encoding(gzip)。

常见首部:

首部示例值描述
Hostwww.example.com主机名(虚拟主机必需)
Content-Typetext/html; charset=utf-8主体类型
Content-Length1234主体长度
Connectionkeep-alive连接类型(长连接)
Cache-Controlno-cache缓存控制
Cookiesession=abc123客户端发送 Cookie
Set-Cookiesession=abc123; Expires=…服务器设置 Cookie
4. 注意事项与扩展
  • 空行:必须有,用于分隔首部和主体。没有主体时,直接以空行结束。
  • 主体传输:使用 Content-Length 或 Transfer-Encoding: chunked(分块传输)。
  • HTTP 版本差异:HTTP/1.1 支持长连接(keep-alive);HTTP/2+ 使用二进制帧,更高效,但语义相同(RFC 9110 定义最新语义)。
  • 工具查看:浏览器 DevTools(Network 标签)、Wireshark、curl、Postman。
  • 安全:HTTPS 在 TLS 层加密报文。

HTTP 报文简单却强大,是理解 Web 工作的关键。如果需要特定示例、某个首部的深入解释或 HTTP/2+ 差异,欢迎继续提问!

http://www.jsqmd.com/news/205914/

相关文章:

  • 深度学习毕设项目推荐-基于python深度学习的砖头墙裂缝识别卷神经网络
  • Attention机制完全揭秘:轻松解决长文本处理难题!
  • 艾体宝案例 | ArangoDB赋能电商个性化推荐:精准匹配需求,拓展增长空间
  • JavaScript返回到上一页的三种方法
  • AI工厂生产安全隐患识别及预警系统:重构工厂隐患识别与预警新范式
  • 高次函数模型的选择与拟合解析,如何识别并拟合3+次函数(超详细,零基础可懂)
  • Linux中dd命令详解
  • _springboot基于vue的工厂车间管理系统(11646)
  • 一边是35岁危机,一边是AI高薪。普通程序员如何选对路、不掉队?
  • C# 里弹出“确定”“取消”对话框
  • springboot图书电子商务网站的设计与实现(11647)
  • SEO插件评分全绿但排名差丨3个真正的问题可能在这
  • 限时公开!6款AI论文神器实测,查重率低于5%!
  • 2026届校园招聘大战开启!阿里、京东、字节等大厂争抢哪类人才?揭秘校招最新趋势!
  • springboot社区医院管理系统(11648)
  • hadoop|贪心
  • 爆肝拆解TradingAgents项目!LLM在AI投研中到底扮演什么角色?小白程序员也能懂的金融AI实战
  • “【震惊】57%企业已投产AI Agent!LangChain最新报告:Coding Agents统治程序员日常,这些坑千万别踩!“
  • Linux---Tomcat服务器Varnish代理服务器
  • EasyGBS打造智能视频监控新体系
  • _基于springboot的二手车交易系统(11649)
  • 爆肝程序员必看!RAG 2.0实战全攻略:从零构建企业级AI原生投诉系统,小白也能秒变AI架构师!
  • EasyGBS重塑商业场所视频监控管理新模式
  • AI圈炸锅!DeepSeek-OCR黑科技:压缩10倍长文本,成本直降90%!VTC技术让大模型“过目不忘“,中科院发布权威评测
  • ue用tick通信执行方法 mcp铺垫
  • 电加热烘箱功能升级,2025年有实力的优质源头生产厂家推荐 - 品牌推荐大师
  • 家庭聚会喝什么酒?适配全年龄层的 8款优选酒清单 - 资讯焦点
  • 【干货】大模型记忆革命:HGMEM技术让AI推理能力提升73%,开发者必看
  • 2026绿化趋势分析,苗木批发基地的成长轨迹,白蜡/红叶石楠/青叶复叶槭/樱花/红叶李,苗木批发基地批发商排行榜 - 品牌推荐师
  • 震惊!AI大模型不是越大越好!ICML 2025最新研究:中小模型+海量文档=性能开挂,小白也能懂的省钱攻略