美文网首页
HTTP——报文和实体

HTTP——报文和实体

作者: 章鱼要回家 | 来源:发表于2019-03-04 10:07 被阅读0次

    本文为《图解HTTP》第三章摘录+总结。
    HTTP报文本身是由多行数据构成的字符串文本,由报文首部和报文主体构成,并不一定要有报文主体。首部是请求或响应的内容及属性,主体是应被发送的数据。
    首先弄清两个概念,报文实体。可将报文看作传输中的“箱子”,而实体是“箱子”里的“货物”,即我们真正想要传送给对方的东西本身,也就是数据。实体由实体首部和实体主体构成,实体首部主要是一些有关实体主体的描述性信息。

    编码传输

    在实际中,通过编码来提升传输的速率。有两种编码方式:压缩传输的内容和分块传输。
    HTTP协议中有一种被称为内容编码的功能可以对实体信息进行压缩,压缩后的实体由客户端接收并进行解码。
    在传输大量内容时,通过把数据分割成多块,让浏览器逐步显示。这种编码方式被称为分块传输编码。

    Content-type

    HTTP协议中采用多部分对象集合(Multipart)的方法,来容纳多份不同的类型的数据。发送的一份报文可含有多类型实体。通常是在图片或文本文件等上传时使用。Multipart集合包含的对象有:

    • multipart/form-data web表单文件上传时使用
    • multipart/byteranges 状态码为206时 响应报文包含了多重范围的内容时使用
      在HTTP报文中使用Multipart需要在首部字段加上Content-type。

    Range

    首部字段Range用来指定资源内的byte范围。而使用了Range发送的请求被称为范围请求,即只请求某个资源的一部分。用于应对网络中断的情况,可以从中断处继续加载,而不是从头开始。
    针对范围请求,响应会返回状态码为206 Partial Content的响应报文。另外,对于多重范围请求,响应会在首部字段Content-Type标明multipart/byteranges后返回响应报文。
    如服务器无法响应范围请求,则返回状态码200 OK和完整的实体内容。

    内容协商

    同一个web网站可能存在多份相同内容的页面,例如英文版和中文版。当浏览器的默认语言为英语或中文时,web页面对应显示相应语言。这样的机制称为内容协商。内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为合适的资源。
    包含在请求报文中的某些首部字段就是判断的基准:Accept、Accept-Charset、Accept-Encoding、Accept-Language、Content-Language。

    内容协商技术有3种类型:

    • 服务器驱动协商
      由服务器端进行内容协商。以请求的首部字段作为参考,自动在服务器端进行处理。对用户来说,以浏览器发送的信息作为判断依据,并不一定功能筛选出最优内容。
    • 客户端驱动协商
      可让用户在页面上进行手动选择,或者利用JS代码在Web页面上自动进行上述选择。比如按os类型或浏览器类型,自动切换成PC版页面或手机版页面
    • 透明协商
      服务器端驱动和客户端驱动的结合体。

    相关文章

      网友评论

          本文标题:HTTP——报文和实体

          本文链接:https://www.haomeiwen.com/subject/ffopuqtx.html