HTTP 报文内的 HTTP 信息

1 HTTP 报文

  • 定义:用于HTTP协议交互的信息被称为HTTP报文。
  • 请求报文和响应报文:请求端(客户端)的HTTP报文叫做请求报文,响应端(服务器端)的叫做响应报文。

2 请求报文及响应报文的结构

在这里插入图片描述
在这里插入图片描述

3 编码

  • 作用:在传输过 程中通过编码提升传输速率。
  • 缺点:编码的操作需要计算机来完成,因此会消耗更多的CPU等资源。
3.1 实体
  • 定义:报文中实际关于有效载荷数据的部分,实体分为实体首部实体主体
  • 实体首部:是报文首部中描述实体主体的部分。
  • 报文主体和实体主体的差异:实体主体指的是未经过传输编码处理的原始数据,而报文主体则则是实际传输的有效载荷数据部分,可能包含传输编码处理过的数据。
3.2 内容编码
  • 作用:保持实体信息原样进行压缩
  • 常用的内容编码
    • gzip(GNU zip)
    • compress(UNIX 系统的标准压缩)
    • deflate(zlib)
    • identity(不进行编码)
3.3 分块传输编码
  • 作用:把数据分割成多块进行分次传输
    • 使用分块传输编码的实体主体会由接收的客户端负责解码,恢复到编码前的实体主体。
  • 优点:在数据大小未知或数据未完全准备好的情况下就能进行响应,能够让浏览器逐步显示页面。

HTTP/1.1 中存在一种称为传输编码(Transfer Coding)的机制,它可 以在通信时按某种编码方式传输,但只定义作用于分块传输编码中。

4 多部分对象集合

  • 作用:一次发送多种类型的实体

  • 集合包含的对象

    • multipart/form-data:在Web表单文件上传时使用。

      在这里插入图片描述

    • multipart/byteranges:状态码 206(Partial Content,部分内容)响应报文包含了多个范围的内容时使用。

      在这里插入图片描述

      在这里插入图片描述

  • 规则

    • 使用boundary字符串来划分多部分对象集合指明的各类实体。在 boundary 字符串指定的各个实体的起始行之前插入“–”标记(例如:- -AaB03x、–THIS_STRING_SEPARATES),而在多部分对象集合对应的字符串的最后插入“–”标记(例如:–AaB03x–、-- THIS_STRING_SEPARATES–)作为结束。
    • 多部分对象集合的每个部分类型中,都可以含有首部字段。

5 范围请求

  • 定义:指定范围发送的请求叫做范围请求(Range Request)。

  • 作用:一种可恢复的机制,一份10000字节大小的资源,如果使用范围请求,可以只请求5001~10000字节内的资源。可以解决下载出现中断的问题。

  • 格式

    在这里插入图片描述

  • 范围请求的响应

    • 会返回状态码为206 Partial Content的响应报文。
    • 对于多重范围的范围请求,响应会在首部字段ContentType标明multipart/byteranges后返回响应报文。
    • 如果服务器端无法响应范围请求,则会返回状态码200 OK和完整的实体内容。

6 内容协商

  • 作用:返回最合适的内容,包括响应资源的语言、字符集、编码方式等。
  • 判断基准:某些首部字段
    • Accept
    • Accept-Charset
    • Accept-Encoding
    • Accept-Language
    • Content-Language
  • 类型
    • 服务器驱动协商(Server-driven Negotiation)
    • 由服务器端进行内容协商。以请求的首部字段为参考,在服务器端自动处理。但对用户来说,以浏览器发送的信息作为判定的依据,并不 一定能筛选出最优内容。
    • 客户端驱动协商(Agent-driven Negotiation)
    • 由客户端进行内容协商的方式。用户从浏览器显示的可选项列表中手动选择。还可以利用 JavaScript 脚本在 Web 页面上自动进行上述选择。比如按 OS 的类型或浏览器类型,自行切换成 PC 版页面或手机版页面。
    • 透明协商(Transparent Negotiation)
    • 是服务器驱动和客户端驱动的结合体,是由服务器端和客户端各自进行内容协商的一种方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值