chegg网站_chunked

chegg网站_chunked服务端给浏览器发送报文时,必须告诉浏览器报文的大小,这样浏览器可以根据报文大小来判断报文的完整性以及在长连接中确定报文的截尾。但是很多服务器的报文是动态创建的,在发送之前是无法确定其大小的。服务器只有等待内容全部创建后,计算出主体的大小,才能响应客户端的请求,这样的处理方法大大延迟了响应。传输编码中的分块编码为这种困难提供了解决方案,服务器可以逐块发送主体,并说明每块的大小就可以了。HTTP协议中

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

服务端给浏览器发送报文时,必须告诉浏览器报文的大小,这样浏览器可以根据报文大小来判断报文的完整性以及在长连接中确定报文的截尾。但是很多服务器的报文是动态创建的,在发送之前是无法确定其大小的。服务器只有等待内容全部创建后,计算出主体的大小,才能响应客户端的请求,这样的处理方法大大延迟了响应。传输编码中的分块编码为这种困难提供了解决方案,服务器可以逐块发送主体,并说明每块的大小就可以了。HTTP协议中只定义了两个首部来描述传输编码:

  • Transfer-Encoding响应首部。告诉浏览器传输编码方式,一般为分块编码。 
  • TE请求首部。告诉服务器自己可以接受的编码方式。

HTTP分块编码的响应报文结构大概是这样的:以HTTP响应首部块开始随后是一系列的分块。每个分块包含一个长度值和该分块的数据,长度值是十六进制形式并将CRLF与数据分隔开。分块中数据的大小以字节计算,不包括长度值和数据之间的CRLF序列。最后是长度为0的结束块,表示分块编码传输结束。

假设请求的文件是jpeg文件,所以在收到数据之后,只考虑跳过响应报文的HEADER部分加\r\n\r\n四个字节后,直接把剩余的数据写到文件中。测试过程中,发现有相当一部分图片不能正常打开,总是比服务器多了几个字节;打印输出响应报文后发现头中并没有我们通常所见的Content-Length域来指明报文体的长度,反而是多了Transfer – Encoding域。上网查阅http1.1协议后,发现通常情况下,Transfer-Encoding域的值应当为chunked,表明采用chunked编码方式来进行报文体的传输。协议中关于这个字段的具体解释如下:

一般HTTP通信时会使用是Content-Length头信息来指定body信息大小,但是有时候无法确定信息大小,就要使用trunked编码动态的提供body内容的长度。进行Chunked编码传输的HTTP数据要在消息头部设置:Transfer-Encoding: chunked表示Content Body将用chunked编码传输内容。Chunked编码一般使用若干个chunk串连而成,最后由一个标明长度为0的chunk标示结束。每个chunk分为头部和正文两部分,头部内容指定下一段正文的字符总数(非零开头的十六进制的数字)和数量单位(一般不写,表示字节).正文部分就是指定长度的实际内容,两部分之间用回车换行(CRLF)隔开。在最后一个长度为0的chunk中的内容是称为footer的内容,是一些附加的Header信息(通常可以直接忽略)。

上述解释过于官方,简而言之,chunked编码的基本方法是将大块数据分解成多块小数据,每块都可以自指定长度,其具体格式如下:

chegg网站_chunked

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/207461.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • SAE J1939介绍

    SAE J1939介绍CAN协议最初由美国博世公司提出,后来SAE在CAN2.0B的基础之上提出J1939协议,该协议主要面向客车和载重货车。J1939协议对应ISO提出的七层OSI模型中的物理层、数据链路层、网络层和应用层,除了这四层,为了保证数据的准确传输和故障诊断,J1939还具有网络管理和应用层诊断。物理层对应J1939-11、J1939-15;数据链路层对应协议中的J1939-21;网络层对应协议中的

  • WebSocket断线自动重连javascript库(含心跳包)

    WebSocket断线自动重连javascript库(含心跳包)ReconnectingWebSocket是一个小型的JavaScript库,封装了WebSocketAPI提供了在连接断开时自动重连的机制。//只需要简单的将:varws=newWebSocket(‘ws://….’);//替换成:varws=newReconnectingWebSocket(‘ws://….’);原ReconnectingWebSocket的GITHUB下载地址下面是我从ReconnectingWebSocket源代码里根据我自身.

  • Linux下的C编程实战

    Linux下的C编程实战(一)――开发平台搭建1.引言Linux操作系统在服务器领域的应用和普及已经有较长的历史,这源于它的开源特点以及其超越Windows的安全性和稳定性。而近年来,Linu

    2021年12月25日
  • docker 常用命令大全

    docker 常用命令大全Docker常用命令大全

  • vue弹窗组件封装_vue弹出框组件

    vue弹窗组件封装_vue弹出框组件VUE全局,需要安装vant

  • java除法保留两位小数_JAVA除法保留小数点后两位的两种方法

    java除法保留两位小数_JAVA除法保留小数点后两位的两种方法1.利用Math.round()的方法:两个int型的数相除,结果保留小数点后两位:inta=1188;intb=93;doublec;c=(double)(Math.round(a*100/b)/100.0);//这样为保持2位打印结果:c=0.12c=newDouble(Math.round(a*1000/b)/1000.0);//这样为保持3位打印结果:c=0.0122.另一种办法i…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号