HTTP报文结构

这篇具有很好参考价值的文章主要介绍了HTTP报文结构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、HTTP 请求结构

HTTP 请求结构可以分为请求行、请求头和请求体三部分。

  1. 请求行

请求行是 HTTP 请求报文中的第一行,指定了该请求使用的方法、URL和协议版本。请求行包含以下三个部分:

a. HTTP 请求方法:指定客户端请求服务器所用的方法,常用的方法有 GET、POST、PUT、 DELETE、PATCH 等。

b. 请求的资源路径:指定了请求的资源路径。

c. HTTP 协议版本:指定了 HTTP 协议的版本,如 HTTP/1.1 等。

例如,请求行可以是这样的:

POST /api/login HTTP/1.1 
  1. 请求头

请求头紧随请求行之后,是 HTTP 请求报文的一部分,包含了客户端向服务器端发送的元数据。请求头的格式是“键(Key)-值(Value)”对,中间用冒号(:)分隔,多个键值对之间使用回车换行符(CRLF)分隔,例如:

Accept-Language: en-US,en;q=0.9 Host: www.example.com 

常见的请求头有:

a. Accept:指定客户端可处理的媒体类型。

b. Content-Type:指定请求体中的媒体类型。

c. User-Agent:指定客户端的浏览器类型、操作系统和版本信息。

d. Referer:指定来源于哪个页面或网站发出的请求。

e. Authorization:为客户端发送身份验证信息。

  1. 请求体

请求体是 HTTP 请求报文的最后一部分,包含了客户端向服务器端发送的实体数据。单个请求可以不含有请求体。请求体的格式根据实际的需要选择。常用的请求体格式有:

a. application/x-www-form-urlencoded:以 URL 编码的方式发送表单数据。

b. application/json:发送 JSON 格式的数据。

c. multipart/form-data:用于发送文件和二进制数据。

d. text/plain:纯文本格式的数据。

例如:

{ "username":"test", "password":"123456" } 

二、HTTP 响应结构

HTTP 响应结构可以分为状态行、响应头和响应体三部分。

  1. 状态行

状态行是 HTTP 响应报文中的第一行,包含了 HTTP 协议版本、状态码和状态描述。状态行的格式如下:

HTTP/1.1 200 OK 

状态码通常由三位数字组成,表示对请求的处理结果。常见的状态码有:

a. 2XX(成功):表示服务器成功地接收到、理解并接受了客户端请求。

b. 3XX(重定向):表示客户端需要执行一些额外的步骤,才能完成请求。

c. 4XX(客户端错误):表示客户端发送的请求包含错误语法或无法完成请求。

d. 5XX(服务器错误):表示服务器遇到错误,无法完成请求。

  1. 响应头

响应头紧随状态行之后,是 HTTP 响应报文的一部分,包含了服务器向客户端发送的元数据。响应头的格式和请求头相同,为键值对的形式,例如:

Content-Type: application/json Cache-Control: max-age=3600 

常见的响应头有:

a. Content-Type:指定响应体的媒体类型。

b. Content-Length:指定响应体的长度。

c. Cache-Control:指定缓存控制策略。

d. Date:指定响应的日期时间。

e. Server:指定服务器的名称和版本信息。

  1. 响应体

响应体是 HTTP 响应报文的最后一部分,包含了服务器向客户端返回的实体数据。响应体格式根据实际需要而定,如 HTML、JSON、XML、图片、视频等。

例如:

{ "success": true, "message": "登录成功" }

HTTP 协议规定,在响应头中必须包含 Content-Type,它用于描述响应体中实体的类型和字符集。Content-Type 的格式一般为“type/subtype;charset=utf-8”,其中 charset=utf-8 指定了响应体的编码格式为 UTF-8。常见的 Content-Type 类型有:

  • text/html:HTML 格式的文本
  • text/plain:普通文本
  • application/json:JSON 格式的数据
  • application/xml:XML 格式的数据
  • image/jpeg:JPEG 格式的图像
  • image/png:PNG 格式的图像

除了 Content-Type 之外,HTTP 协议还支持 Content-Encoding 响应头,用于指示响应体的压缩方法。常见的压缩方法有 gzip 和 deflate,可以减少响应体的大小,提高传输效率。

例如,在使用 gzip 压缩后的响应体中,Content-Encoding 响应头的值为“gzip”,Content-Type 响应头的值为“text/html;charset=utf-8”。这样的响应体需要在客户端进行解压缩,然后按照指定的字符编码进行解码,才能得到原始的文本信息。文章来源地址https://www.toymoban.com/news/detail-480028.html

到了这里,关于HTTP报文结构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HTTP/1.1协议中的请求报文

    2023年8月30日,周三上午 目录 概述 请求报文示例 详述 HTTP/1.1协议的请求报文由以下几个部分组成: 请求行(Request Line) 请求头部(Request Headers) 空行(Blank Line) 请求体(Request Body) 需要注意的是,请求头部是可选的,而请求行和空行是必需的。 在这个示例中, 请求行指

    2024年02月10日
    浏览(42)
  • Nodejs基础6之HTTP模块的获取请求行和请求头、获取请求体、获取请求路径和查询字符串、http请求练习、设置HTTP响应报文、http响应练习

    含义 语法 重点掌握 请求方法 request.method * 请求版本 request.httpVersion 请求路径 request.url * URL 路径 require(‘url’).parse(request.url).pathname * URL 查询字符串 require(‘url’).parse(request.url, true).query * 请求头 request.headers * 请求体 request.on(‘data’, function(chunk){}),request.on(‘end’, functio

    2024年02月20日
    浏览(43)
  • HTTP协议 | 一文详解HTTP报文结构

    目录 🌳 HTTP/HTTPS简介 🌳 HTTP工作原理 HTTP三点注意事项 1. HTTP是无连接的 2. HTTP是媒体独立的 3. HTTP是无状态的 HTTPS 作用 🌳 HTTP消息结构 HTTP请求消息 1. 请求行 2. 请求头 3. 空行 4. 请求数据 HTTP请求实例 HTTP请求GET和POST的区别 1. 传输数据的方式不同 2. 传输数据的大小不同 3

    2024年02月03日
    浏览(46)
  • 5.6和5.7、项目整体流程代码实现,解析http请求报文

    代码地址 逻辑单元内部的一种高效编程方法:有限状态机 (finite state machine) 。 有的应用层协议头部包含数据包类型字段,每种类型可以映射为逻辑单元的一种执行状态,服务器可以根据它来编写相应的处理逻辑。如下是一种状态独立的有限状态机: 这是一个简单的有限状

    2023年04月25日
    浏览(54)
  • HTTP报文结构

    一、HTTP 请求结构 HTTP 请求结构可以分为请求行、请求头和请求体三部分。 请求行 请求行是 HTTP 请求报文中的第一行,指定了该请求使用的方法、URL和协议版本。请求行包含以下三个部分: a. HTTP 请求方法:指定客户端请求服务器所用的方法,常用的方法有 GET、POST、PUT、

    2024年02月08日
    浏览(28)
  • HTTP 和 HTTPS(请求响应报文格式 + 请求方法 + 响应状态码 + HTTPS 加密流程 + Cookie 和 Session)

    HTTP 全称 “ 超文本传输协议 ”,是一种基于传输层 TCP 协议实现的应用非常广泛的 应用层协议 我们平时打开一个网站,就是通过 HTTP 协议来传输数据的 当我们在浏览器中访问一个 “ 网址 ”(URL),浏览器就会给这个 URL 的服务器发送一个 HTTP 请求,服务器返回一个 HTTP 响

    2023年04月19日
    浏览(44)
  • 一些HTTP、TCP、IP、以太报文结构图

    都是我在学习时候整理的一些报文结构,单独的各图例如下: 模型、URL HTTP 报文 IP 报文 以太网报文 如果图中有错误或希望更多的图例,评论或私聊告诉我就好,我之后再完善上

    2024年01月17日
    浏览(53)
  • Postman —— HTTP请求基础组成部分

    一般来说,所有的HTTP Request都有最基础的4个部分组成: URL 、  Method 、  Headers 和 body 。 (1)Method 要选择Request的Method是很简单的,Postman支持所有的请求方式。 (2)URL 要组装一条Request(请求), URL永远是你首先要填的内容。在Postman里面,你曾输入过的URL是可以通过下拉自

    2024年02月03日
    浏览(40)
  • 一个 TCP 连接可以发送多少个 HTTP 请求

    第一个问题 第二个问题 第三个问题 第四个问题 第五个问题 曾经有这么一道面试题:从 URL 在浏览器被被输入到页面展现的过程中发生了什么? 相信大多数准备过的同学都能回答出来,但是如果继续问:收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式、什么顺

    2024年02月08日
    浏览(51)
  • 一文告知HTTP GET是否可以有请求体

    先说结论: HTTP协议没有规定GET请求不能携带请求体,但是部分浏览器会不支持,因此不建议GET请求携带请求体。 HTTP 协议没有为 GET 请求的 body 赋予语义,也就是即不要求也不禁止 GET 请求带 body。 大多数 HTTP 实现从技术上都支持 HTTP GET 请求带 body,少数实现会禁止(google

    2024年02月21日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包