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

使用Java实现CRC16 MODBUS 格式校验

CRC16校验,测试如下 String str = "a5 98 03 00 00 5f c6 0f 7c 40 78 06 09 46 dc 6e db 00 16 3e 12 5c 98 00 19 98 0e 10 03 06 09 46 dc 6e db 03 0b bf 5f c6 0f 7c 43 bd b9 61 ee 96 76 99"; 校验规则: /** * CRC16_CCITT:多项式x16+x12+x5+1(0x1021),初始值0x0000,低位在前,高位在后,结

weixin_45063710的博客 1315

数据工程师——ETL

文章摘要 ETL(数据抽取、转换、加载)是数据处理的核心流程,负责将分散数据源整合为高质量数据。ETL与ELT的主要区别在于转换步骤顺序,分别适用于不同规模数据场景。数据仓库通过ETL从多个数据源集成数据,支持分析决策。维度建模中的事实表记录业务指标,维度表提供上下文信息。缓慢变化维度(SCD)处理随时间变化的维度数据,常见类型包括直接覆盖型、新增版本型等。数据清洗解决数据缺失、重复、错误等问题,确保数据质量。数据血缘记录数据流转路径,便于问题排查和影响分析。常用ETL工具如Kettle通过转换和作业实现数

weixin_45729710的博客 1560

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

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

azhangyi188的专栏 9975

SAP PP模块 MRP配置实战:5步完成工厂级物料需求计划激活

本文详细介绍了SAP PP模块中物料需求计划(MRP)的工厂级配置实战,通过5个关键步骤从基础环境准备到最终激活。内容涵盖SPRO后台配置、MRP控制者定义、主数据设置及核心参数调整,帮助顾问快速掌握MRP配置清单的完整流程,确保物料需求计划的高效运行。

weixin_30431445的博客 342

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

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

爱折腾丶 2389

OCC WebGL案例编译实战:从FreeType配置到静态库生成

本文详细记录了将OCC(Open CASCADE Technology)3D图形库编译为WebAssembly(Wasm)并在浏览器中通过WebGL渲染的实战过程。重点解决了FreeType库的交叉编译配置、OCC核心库的裁剪与静态库生成,以及WebGL样例项目的CMake改造等关键步骤,为开发者提供了从环境搭建到最终集成的完整指南。

weixin_28831461的博客 316

手把手教你用PlantVillage数据集搭建农作物病害识别模型(Python实战)

本文详细介绍了如何使用PlantVillage数据集和Python构建农作物病害识别模型。从环境准备、数据获取到模型构建、训练与评估,手把手教你实现一个实用的农业AI应用。特别针对PlantVillage数据集的特点,提供了处理类别不平衡、图像预处理和模型优化的实战技巧,帮助开发者快速掌握农作物病害识别技术。

weixin_29184371的博客 479

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

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

1万+

PCL基础:getTransformation函数全流程解析与应用实例,一篇文章精通点云变换

在 Eigen 和 PCL 中,getTransformation是一个常用的函数,用于根据输入的平移和旋转信息(如欧拉角或四元数)生成一个仿射变换矩阵(Eigen::Affine3f或 Eigen::Affine3d)。1)在 Eigen 中,可以通过四元数和平移向量构造一个变换矩阵。2)讲解了从四元数转换到欧拉角,或者从欧拉角转换到四元数的方法。

weixin_42896234的博客 1368

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

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

随手记两笔 4万+

Xinference新手指南(一个命令直接安装成功)

对于新手,必须得学会使用docker部署,这是基本功!这里就不过多去介绍了,如果评论要出教程的话,以后再出了。

Ven%的博客 819

【Flink】Flink提交任务到Yarn报错Unable to close file because the last blockBP enough number of replicas

当使用 HDFS 存储文件时,每个数据块会有多个副本分布在不同的节点上,以确保数据的可靠性和容错性。然而,由于某种原因,最后一个数据块 blk_1101776325_28036289 的副本数量不足,导致无法成功关闭文件。如果确定副本数量正确,并且问题仍然存在,可以尝试手动修复副本不足的情况。异常消息表明在关闭文件时出现问题,我的原因是hadoop上有个节点有问题,导致提交到那个节点的时候,无法传递包到相关的机器上。检查 HDFS 集群的状态,确保所有节点都正常工作,没有节点宕机或网络故障等问题。

九师兄 935

http 头里没有content-length属性

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

1996

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

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

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

challenglistic的博客 4898

WINCC7.3破解文件

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

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

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万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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、付费专栏及课程。

余额充值