当前位置:   article > 正文

Response 的头部没有 Content-Length_响应头没有content-length

响应头没有content-length

1. 背景

使用Okhttp的框架,在七牛服务器上进行文件下载,发现一个奇怪的问题,在进行 Http 进行下载的时候,Response 的回包里面,偶尔会出现没有 Content-Length 的情况,导致无法准确的获取下载进度。

在查找问题的过程中,较深入的了解Http下载的流程和fiddler抓包工具的使用,并在与七牛的运维确定问题后,给出了我认为较合理的解决方案。

2. 原因

造成没有 Content-Length 的原因,是由于七牛的服务器没有返回这个字段,七牛方面给出的回复如下:

这边排查当请求头带有 Accept-encoding: gzip 时,第一次请求到某个节点时,会没有 content-length 头,第二次请求到相同节点,就会带这个头了。

当 CDN 节点需要做 gzip 压缩时,为加快第一次响应速度,会在做完 gzip 压缩后直接先响应内容,再计算 content-length ,这样第二次访问到该节点的时候,会把上次的 gzip 压缩内容和 content-length 都返回。
  • 1
  • 2
  • 3

所以原因总结要点如下:

  1. 七牛服务器默认会对文本格式的文件进行 gzip
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/108728
推荐阅读
相关标签
  

闽ICP备14008679号