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”。这样的响应体需要在客户端进行解压缩,然后按照指定的字符编码进行解码,才能得到原始的文本信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值