http 响应头里 没有 或者有 content-length 的几种可能性

Response 的头部没有 Content-Length 文章目录 1. 背景 2. 原因 3. 解决方式 4. 知识点 4.1 Fiddler 4.2 Http 4.3 CDN 5.附录 5.1 请求&回包头部信息 1. 背景 使用Okhttp的框架,在七牛服务器上进行文件下载,发现一个奇怪的问题,在进行 Http 进行下载的时候,Resp... 阅读详情

对于http的请求返回结果要进行内容的长度校验主要有两种方式,二者互斥使用

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

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



在HTTP协议中,Content-Length用于描述HTTP消息实体的传输长度the transfer-length of the message-body。在HTTP协议中,消息实体长度和消息实体的传输长度是有区别,比如说gzip压缩下,消息实体长度是压缩前的长度,消息实体的传输长度是gzip压缩后的长度。

在具体的HTTP交互中,客户端是如何获取消息长度的呢,主要基于以下几个规则:

  • 响应为1xx,204,304相应或者head请求,则直接忽视掉消息实体内容。
  • 如果有Transfer-Encoding,则优先采用Transfer-Encoding里面的方法来找到对应的长度。比如说Chunked模式。
  • “如果head中有Content-Length,那么这个Content-Length既表示实体长度,又表示传输长度。如果实体长度和传输长度不相等(比如说设置了Transfer-Encoding),那么则不能设置Content-Length。如果设置了Transfer-Encoding,那么Content-Length将被忽视”。这句话翻译的优点饶,其实关键就一点:有了Transfer-Encoding,则不能有Content-Length。
  • Range传输。不关注,没详细看了:)
  • 通过服务器关闭连接能确定消息的传输长度。(请求端不能通过关闭连接来指明请求消息体的结束,因为这样可以让服务器没有机会继续给予响应)。这种情况主要对应为短连接,即非keep-alive模式。
  • HTTP1.1必须支持chunk模式。因为当不确定消息长度的时候,可以通过chunk机制来处理这种情况。
  • 在包含消息内容的header中,如果有content-length字段,那么该字段对应的值必须完全和消息主题里面的长度匹配。
    “The entity-length of a message is the length of the message-body before any transfer-codings have been applied”
    也就是有chunk就不能有content-length 。

其实后面几条几乎可以忽视,简单总结后如下:

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

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

3、如果采用短连接,则直接可以通过服务器关闭连接来确定消息的传输长度。(这个很容易懂)

结合HTTP协议其他的特点,比如说Http1.1之前的不支持keep alive。那么可以得出以下结论:

1、在Http 1.0及之前版本中,content-length字段可有可无。

2、在http1.1及之后版本。如果是keep alive,则content-length和chunk必然是二选一。若是非keep alive,则和http1.0一样。content-length可有可无






我总结我的例子   如果  要是 js  css  html 这样的文件的话   会返回 contengt-length  字节  前提是    nginx 里的gzip  off   如果是on 的话   返回  chunk

执行的如果是 动态 脚本的话,    还是返回chunk 前提是  content:keep-alive     如果不是长连接的话   返回的头里面没有content-leght   ()


HTTP协议-请求报文详解(Request) 在了解完HTTP协议的基础知识之后,可以知道该协议有两种形式的报文,上一节主要了解了HTTP协议两种报文的基本格式。本节主要针对HTTP协议的请求报文(Request)进行详解,对请求报文的具体格式规范以及每个关键字的含义进行详细介绍。 阅读详情

相关推荐

ERR_CONTENT_LENGTH_MISMATCH 200错误:从HTTP协议到实战排查的完整指南

HTTP协议中的Content-Length头部用于精确声明响应体的字节长度,这是确保客户端与服务器之间数据传输完整性的基础机制。其工作原理是服务器在响应头中声明长度,浏览器据此接收对应字节数的数据。这一机制的技术价值在于保障了Web资源的可靠加载,防止因数据不完整导致的页面渲染错误。在实际应用场景中,动态内容生成、服务器压缩配置、CDN代理修改等环节都可能破坏这种一致性,从而触发ERR_CONTENT_LENGTH_MISMATCH错误。本文聚焦于这一常见但棘手的网络问题,通过系统性的排查流程,结合cur

weixin_29254673的博客 341

HTTP协议中的Content-Length

Content-Length 是一个实体消息首部,用来指明发送给接受方的消息主体的大小。 Content-Length如果存在并且有效地话,则必须和消息内容的传输长度完全一致; Content-Length == 实际长度 const http = require('http'); const server = http.createServer(); server.on('request', (req, res) => { if(req.url === '/') { res.set

zxl1990_ok的博客 5万+

Http协议中关于Content-Length的解读.docx

Http协议中关于Content-Length的解读.docx

java trunked_Http协议之Content-Length

前言http协议是互联网中最重要的协议之一,虽然看上去很简单,但是实际中经常遇到问题,我们就已经遇到好几次了。有长连接相关的,有报文解析相关的。对http协议不能一知半解,必须透彻理解才行。所以就写了这个系列分享http协议的问题与经验。问题我们的手机App在做更新时会从服务器上下载的一些资源,一般都是一些小文件,更新的代码差不多是下面这样的:staticvoidupdate()throws...

weixin_39609718的博客 603

模拟IC设计实战:折叠式共源共栅放大器的参数优化与噪声抑制

本文深入探讨了折叠式共源共栅放大器的核心设计要点。针对低电压下增益与输出摆幅的矛盾,文章详细阐述了从套筒式结构转向折叠式结构的必要性,并重点分析了其参数优化与噪声抑制的实战方法。通过手把手的参数计算流程,指导如何平衡增益、带宽、摆幅与功耗。同时,深入剖析了噪声来源,强调了采用PMOS输入对管以抑制1/f噪声,并提供了针对共栅管及电流镜的噪声优化策略,是模拟IC设计中高性能放大器设计的实用指南。

vv45678的博客 978

先进封装技术 Part03---重布线层(RDL)的科普

RDL是一种在芯片封装过程中用于重新分布电气连接的技术。它通过在芯片表面或中介层上形成额外的布线层,重新分配芯片的I/O(输入/输出)位置,以适应不同的封装需求和提高电气连接的灵活性。

阿拉伯梳子的专栏 4706

http响应头里没有或者有content-length的几种可能性

http响应头里没有或者有content-length的几种可能性 对于http的请求返回结果要进行内容的长度校验主要有两种方式,二者互斥使用1.客户端在http头(head)加Connection:keep-alive时,服务器的response是Transfer-Encoding:chunked的形式,通知页面数据是否接收完毕,例如长连接或者程序运行中可以动态的输出内容,例如一些运算比较复...

azhangyi188的专栏 9975

airodump-ng、aircrack-ng使用教程

wifi破解、airodump-ng、aircrack-ng脚本

ssmbyss的博客 2233

最近在改一个网站、有用到 http 响应头里 没有 或者有 content-length 的几种可能性

对于http的请求返回结果要进行内容的长度校验主要有两种方式,二者互斥使用 1.客户端在http头(head)加Connection:keep-alive时,服务器的response是Transfer-Encoding:chunked的形式,通知页面数据是否接收完毕,例如长连接或者程序运行中可以动态的输出内容,例如一些运算比较复杂且需要用户及时的得到最新结果,那就采用chunked编码将

爱折腾丶 2389

Arduino、ESP32驱动TEMT6000传感器(光照传感器篇)

TEMT6000是一个三极管类型的光敏传感器,其光照强度和基极的电流成正比。用起来也相当简单,可以简单的连接该传感器的基极到模拟电压输入,通过简单的检测电压值就可以判断当前的光照强度。

不脱发的程序猿 4233

打破RK3588 GPIO中断响应延迟的枷锁,开启高效编程

本文针对RK3588芯片在智能安防和工业自动化应用中出现的GPIO中断响应延迟问题展开深入分析。通过硬件原理剖析,发现延迟主要源于中断控制器优先级设置、线路干扰等硬件因素,以及中断处理函数复杂、内核调度延迟等软件问题。提出硬件优化方案包括合理布局布线、电源稳定设计,软件层面则通过精准配置设备树、精简中断处理函数、利用工作队列等内核机制进行优化。测试结果显示,优化后中断响应延迟从50-80ms降至10-20ms,高负载下也能稳定在50ms以内。文章最后展望了AI技术在中断调度中的潜在应用价值。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 363

http 响应头里 没有 或者有 content-length 的几种可能性

对于http的请求返回结果要进行内容的长度校验主要有两种方式,二者互斥使用 1.客户端在http头(head)加Connection:keep-alive时,服务器的response是Transfer-Encoding:chunked的形式,通知页面数据是否接收完毕,例如长连接或者程序运行中可以动态的输出内容,例如一些运算比较复杂且需要用户及时的得到最新结果,那就采用chunked编码将

1万+

14、PostgreSQL日志文件、系统统计与查询优化全解析

本文全面解析了PostgreSQL数据库中的系统统计、日志文件配置与查询优化技巧。详细介绍了如何利用pg_stat_statements模块进行性能监控,配置日志记录以发现潜在问题,并深入探讨了查询优化器的工作原理和优化策略。通过实际案例分析,展示了如何综合应用这些技术提升数据库性能。适合希望提升PostgreSQL性能与稳定性的数据库管理员和开发人员阅读。

efc123456的博客 94

http 响应头里content-length 的几种情况

对于http的请求返回结果要进行内容的长度校验主要有两种方式,二者互斥使用 1.客户端在http头(head)加Connection:keep-alive时,服务器的response是Transfer-Encoding:chunked的形式,通知页面数据是否接收完毕,例如长连接或者程序运行中可以动态的输出内容,例如一些运算比较复杂且需要用户及时的得到最新结果,那就采用chunked编码将

随手记两笔 4万+

ardupilot 日志分析《xKF1信息》

ardupilot 日志分析系列将会把ardupilot所有的日志文档进行分析,为我们分析无人机的运行状态,炸鸡原因,传感器状态,电机状态,控制信息,滤波信息做准备。本节主要分析xKF1日志信息,欢迎批评指正。学习好ardupilot必须会分析飞行日志,从飞行日志中我们可以学到很多无人机的知识。无人机是综合知识的体现,涵盖:导航、控制、滤波、算法、协议等各种知识,只有更全面的学习,才能在无人机的道路上越走越远。

陌城烟雨 1226

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

http 头里没有content-length属性

公司服务器与手机客户端交互,客户端请求一个地址服务器发往一段XML数据,在用Fiddler查看http响应头的时候,有时候发现有content- length属性,有时候没有这个属性,取而代之的是Transfer-Encoding: chunked属性。由于客户端强制要求,服务器端必须返回content-length,否则,将导致客户端解析错误。 于是测试发现,当XML数据量小的时候,是有con

1996

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

http协议 Header 常见属性(一) —— Content-Type、Content-Length

http协议 Header 常见属性 —— Content-Type、Content-Length属性

challenglistic的博客 4898

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Pytho爬虫获取request的content-length

今天在写爬虫的时候遇到了一个app的接口,需要传request的Content-Length,如果不传或者Content-Length不正确就会返回不相关的信息,在网上找了一些,感觉比较少说这个问题的,记录一下 Content-Length的了解 在HTTP协议中,Content-Length用于描述HTTP消息实体的传输长度the transfer-length of the message-...

qq_37480422的博客 1万+

content-length http协议

http协议 content-length

global_coding的博客 1665

FactoryBluePrints:7128 张戴森球计划工厂蓝图,复制文件夹进游戏就能放

FactoryBluePrints 是《戴森球计划》的工厂蓝图仓库,汇集 7128 张社区验证过的 .txt 蓝图。从开局铁块到末期戴森球,每个阶段都有现成布局,挑一张放下去,一条传送带都不用画。想找现成产线省时间的新手,直接看这篇。 ## 家底速览 - 7128 个 .txt 蓝图文件,一张蓝图一个文件 - 26 个功能目录:采矿、发电、超市、糖、燃料棒、太阳帆…… - 覆盖全游戏流程:开荒

gitblog_00884的博客 288
上一篇: nginx + php(fastcgi)上大文件传文件的问题
下一篇: php-fpm实现fastcgi生成php-cgi 的整个流程/usr/local/php/bin/php-cgi--fpm--fpm-config /usr/local/php/etc/php-co
superhosts
博客等级 码龄15年 62粉丝 60原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值