zoukankan      html  css  js  c++  java
  • HTTP报文内的HTTP信息

    HTTP报文:用于HTTP协议交互的信息,是由多行数据构成的字符串文本(用CR+LF作换行符)。

    结构:报文首部+空行+报文主体(非必需)

    请求报文:客户端的HTTP报文。  报文首部的内容:请求行,请求首部字段,通用首部字段,实体首部字段,其他。

    响应报文:服务器端的HTTP报文。 报文首部的内容:状态行,响应首部字段,通用首部字段,实体首部字段,其他。

    编码提升传输速率

    HTTP在传输数据时可以进行编码来提升传输速率。编码的操作需要计算机来完成,因此会消耗更多的CPU等资源。

    内容编码指明应用在实体内容上的编码格式,并保持实体信息原样压缩。内容编码后的实体由客户端接受并负责解码。

    常见的内容编码有:gzip(GNU zip)、compress(UNIX系统的标准压缩)、deflate(zlib)、identity(不进行编码)。

    分块传输编码(Chunked Transfer Coding):一种把实体主体分块的功能。

    分块传输编码会将实体主体分成多个部分(块)。每一块都会用十六进制来标记块的大小,而实体主体的最后一块会用“0(CR+LF)”来标记。

    由客户端进行解码。

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

    发送多种数据的多部分对象集合

    在HTTP报文中使用多部分对象集合时,需要在首部字段里加上Content-type。

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

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

    范围请求(Range Request)

    问题:下载一个图片发生中断时,需要重新下载。

    解决:指定下载的实体范围。

    比如:对于一个1000字节的图片,下载到一半时发生网络中断,待网络恢复时可以只请求下载501~1000字节内的资源。

    执行范围请求时,会用到首部字段Range来指定资源的byte范围。

    #5001~10000字节
    Range: bytes=5001-10000
    #从5001字节之后全部的
    Range: bytes=5001-
    #从一开始到3000字节,和5000-7000字节的多重范围
    Range: bytes=-3000, 5000-7000

    针对范围请求,相应会返回状态码为206 Partial Content的响应报文。

    对于多重范围的范围请求,相应会在首部字段Content-Type标明multipart/byteranges后返回响应报文。

    如果服务器端无法响应范围请求,则会返回状态码 200 OK和完整的实体内容。

    内容协商(Content Negotiation)

    内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为适合的资源。

    用处:当浏览器的默认语言为英语或中文,访问相同URI的Web页面,会显示对应的英语班或中文版Web页面。

    三种类型:

    1.服务器驱动协商(Server-driver Negotiation):由服务器端进行内容协商。以浏览器发送的首部字段作为判定的依据,并不一定能筛选出最优的内容。

    2.客户端驱动协商(Agent-driver Negotiation):由客户端进行内容协商的方式。用户从浏览器显示的可选列表中手动选择。

    3.透明协商(Transparent Negotiation):是服务器驱动和客户端驱动的结合体,由服务器端和客户端各自进行内容协商的一种方法。

  • 相关阅读:
    Spring Cloud Sleuth服务跟踪
    Spring Cloud Zuul(服务网关)
    百度地图,定位,添加图标
    kmp算法
    将16进制unsigned char数组转换成整数
    导入多个手机的数据库数据到本地数据库
    VLC添加水印
    QAbstractItemView区分单双击
    QWebView崩溃的问题
    Windows平台dump文件的产生,调试;工程配置pdb文件怎么生成
  • 原文地址:https://www.cnblogs.com/drake-guo/p/6247844.html
Copyright © 2011-2022 走看看