zoukankan      html  css  js  c++  java
  • 【HTTP协议】响应头中的Content-Length和Transfer-Encoding

    来源:

    http://blog.csdn.net/superhosts/article/details/8737434

    http://bbs.csdn.net/topics/390384017

    对于http的请求返回结果要进行内容的长度校验主要有两种方式:

    1.客户端在http头(head)加Connection:keep-alive时,服务器的response是Transfer-Encoding:chunked的形式,通知页面数据是否接收完毕,例如长连接或者程序运行中可以动态的输出内容,例如一些运算比较复杂且需要用户及时的得到最新结果,那就采用chunked编码将内容分块输出。

    2.除了如1所述之外的情况一般都是可以获取到Content-Length的。

    Content-Length如果存在并且有效的话,则必须和消息内容的传输长度完全一致。(经过测试,如果过短则会截断,过长则会导致超时。)

    如果存在Transfer-Encoding(重点是chunked),则在header中不能有Content-Length,有也会被忽视。

    -----------------------------------------------------------------------------------------------------

    Transfer-Encoding: chunked的意思是:一边读数据,一边发给客户端。不是一下传输。会带这个头信息。
    Content-Length:则是,服务器内已经缓存了哪个说句,一下发送给客户端会带这个头信息。

    情况是这样的,服务端是动态生成的,你在数据很小的时候,没超过服务器的buffer大小的情况下
    HTTP的header还没传输过来,能够把Content-Length传输过来。
    在数据的大小超过buffer的情况下,服务器必须将HTTP Header和Entity(数据)flush到客户端,这个时候,entity大小仍然未知,所以没有Content-Length。

  • 相关阅读:
    Grunt jshint Warning: Path must be a string . Received null Use
    bootstrap滚动监视原理实现
    Bootstrap模态框原理分析及问题解决
    LeetCode54. 螺旋矩阵
    LeetCode53. 最大子序和
    mysql servers实现层拼写SQL
    easyUI 分页 获取页面
    excel导入功能
    easyUI遮罩
    uuid生成
  • 原文地址:https://www.cnblogs.com/dplearning/p/5728228.html
Copyright © 2011-2022 走看看