HTTP协议,头部不存在 Content-Length 时

【网络原理】HTTP|认识请求“报头“|Host|Content-Length|Content-Type|UA|Referer|Cookie 本篇文字主要介绍了HTTP的请求方法header:host,content-lengthcontent-type,UA,referer,cookie,其中重点的就是cookie,主要介绍了是啥,怎么存,从哪来,到哪去,作用是啥,还有一个典型应用场景:保存会话id 阅读详情
 参考 Tomcat 中响应头信息(Http Response Header) Content-Length 和 Transfer-Encoding 之种种

http://blog.csdn.net/shootyou/article/details/6135669 

此前遇到这个问题,HTTP头部没有Content-Length字段。一位朋友通过修改服务器的配置解决。

他使用的方法是:

this.getResponse().setBufferSize(402800); 

        然而,当他们安装新的服务器时,又使用了默认的配置,程序再次出现故障。为了解决这个问题,最好的方法自然是在客户端处理。于是:大致总结如下:

        如果没有Content-Length,而改用Tansfer-Encoding:chunke,则:

        以"\r\n\r\n“作为HTTP头部的结束符号。其后,追加的是16进制的数据正文长度。接着是"\r\n“。接着是数据正文,再接着是"\r\n0\r\n\r\n"。即:

"\r\n\r\n“+十六进制的长度(字符串)+"\r\n“+数据正文+"\r\n0\r\n\r\n"

 

        但这不是绝对的。比如,我的HTML内容是"a 0",那么,没有指定长度时,客户端应该收到"\r\n\r\n3\r\na 0\r\n0\r\n\r\n",而事实上结果可能不是这样,而是"\r\n\r\n3\r\na 0\r\n\r\n"。这点就比较恼人了。——我的处理方法是:假设收到的数据经过计算,发现内容长度(例如3个字节)都已传送完毕,就认为接收完毕。至于后面是"\r\n0\r\n\r\n"还是"\r\n\r\n",都不是我们所关心的问题。

 

        然而,这也不是绝对的!因为上面的数据是未经过压缩的!有些HTTP服务器支持数据压缩,比如“Content-Encoding: gzip”,这时候,收到的数据,首先是根据上面的方法取得真实长度和数据内容,然后解压缩。

HTTP头部信息(通用头部、请求头部、响应头部、实体头部 HTTP头部信息包括通用头部、请求头部、响应头部和实体头部四个部分。HTTP头部信息的作用是在客户端和服务器之间传递额外的信息,以便更好地处理和控制请求和响应的行为和内容。HTTP头部信息包括响应头部、请求头部、通用头部和实体头部四个部分。请求头的作用请求头提供了关于客户端环境和请求参数的信息。例如,User-Agent请求头告诉服务器关于客户端浏览器类型、操作系统和版本等信息。Accept请求头告诉服务器客户端可以处理的媒体类型,例如text/html等。响应头的作用。 阅读详情

相关推荐

从门禁到支付:Uniapp+NFC开发避坑指南(支持Mifare Classic)

本文详细介绍了Uniapp结合NFC技术开发门禁与支付系统的实战指南,特别针对Mifare Classic卡片进行深度优化。内容涵盖环境配置、设备兼容性处理、卡片安全机制解析以及高性能读写优化策略,帮助开发者快速实现跨平台的智能硬件交互解决方案。

t1u2v的博客 720

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

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

superhosts的专栏 3万+

RestEasy 默认 http 返回头部没有Content-Length

problem 近日与外部用resteasy 接口 调试候,发现 没有content - length 字段 因为要对方是http长连接,需要根据长度获取包体,性能好一些。 长连接有沾包的问题,要用Content-length切割body 从 http 1.1 开始,长连接大行其道,而头部Content - length 也被较少的用到。 basic https://blog.cs...

771

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

https://www.cnblogs.com/lovelacelee/p/5385683.html

Keluoladuo的博客 2900

HttpURLConnection 发送请求 以及 接受数据丢失,响应头部Content-Length存在的问题处理。

java中有很多可以用户发送http请求的工具,而我个人喜欢用更底层一点的,所以就选择了这个java自带的http请求工具。 底层的优点就是可以自定义发送的编码,头部等,很随意。 第一代 HttpURLConnection 请求代码 下面是我自己写的发送请求的代码,专门用于发送json格式的请求: private void httpPost(String body, String httpUrl) { try { URL url = new URL(httpUrl); // utl

weixin_44927769的博客 5484

Response 的头部没有 Content-Length

文章目录1. 背景2. 原因3. 解决方式4. 知识点4.1 Fiddler4.2 Http4.3 CDN5.附录5.1 请求&回包头部信息 1. 背景 使用Okhttp的框架,在七牛服务器上进行文件下载,发现一个奇怪的问题,在进行 Http 进行下载的候,Response 的回包里面,偶尔会出现没有 Content-Length 的情况,导致无法准确的获取下载进度。 在查找问题的过程中...

ICodeMan的博客 1万+

http 头里没有content-length属性

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

吕建奎的专栏 2932

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详解

前言 http协议是互联网中最重要的协议之一,虽然看上去很简单,但是实际中经常遇到问题,我们就已经遇到好几次了。有长连接相关的,有报文解析相关的。对http协议能一知半解,必须透彻理解才行。本文通过一个线上实例,详细介绍http协议中的content-length字段。 问题 我们的手机App在做更新会从服务器上下载的一些资源,一般都是一些小文件,更新的代码差多是下面这样的: static void update() throws IOException { URL url = ne

幽雨雨幽 7323

HTTP Content-Length深入实践

转载自(https://www.jianshu.com/p/d606732f2ebc) 引子 HTTP头部Content-Length用于描述HTTP消息实体的传输长度,浏览器对比Content-LengthHTTP请求或者响应body长度判断一次HTTP传输过程,以独立于TCP长连接。但是如果Content-LengthHTTP请求或者响应body长度一致,本文深入实践浏览器怎么处理...

鱼阿鱼的博客 4万+

[HTTP] HTTP 协议 Response HeaderContent-Length、Transfer-Encoding与Content-Encoding

目录0 引言1 概述篇1.1 Transfer-Encoding1.2 Content-Encoding1.3 Accept-Encoding : 客户端声明可接受的编码1.4 Persistent Connection(持久连接)1.5 Content-Length : 告诉浏览器(编码后)响应实体的长度没有 Content-Length : pending引入 Content-Length...

weixin_33509600的博客 2075

HTTPContent-Length

HTTP协议中,有Content-Length的详细解读。Content-Length用于描述HTTP消息实体的传输长度the transfer-length of the message-body。在HTTP协议中,消息实体长度和消息实体的传输长度是有区别,比如说gzip压缩下,消息实体长度是压缩前的长度,消息实体的传输长度是gzip压缩后的长度。在具体的HTTP交互中,客户端是如何获取消息长度

非著名coder的窝 3025

Tinyhttpd HTTP头部字段:Content-LengthContent-Type设置

你是否曾因网页加载异常而困扰?图片显示全、表单提交失败、API接口报错...这些问题往往与HTTP头部字段设置当有关。本文将通过剖析Tinyhttpd源码,详细讲解Content-LengthContent-Type这两个核心HTTP头部字段的设置原理与实践方法,帮助你彻底解决这类常见问题。读完本文,你将能够:理解HTTP头部字段的重要性,掌握Content-LengthContent-T...

gitblog_00151的博客 408

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

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

challenglistic的博客 4887

Http - content-length 了解

数据以一系列分块的形式进行发送.首部在这种情况下被发送. 在每一个分块的开头需要添加当前分块的长度, 以十六进制的形式表示,后面紧跟着\r\n, 之后是分块本身, 后面也是\r\n. 终止块是一个常规的分块, 同之处在于其长度为0。

面朝大海,春暖花开 6604

说说你对HTTP协议Content-Length头部的理解。

具体来说,当我们通过HTTP协议发送一个请求或响应,我们会把要发送的信息放在请求的“主体”部分。因为如果没有这个头部,接收方可能知道信息何会结束,有可能会多等或少等,导致信息接收完整或出现错误。这就像是我们寄一封信,仅要确保信的内容写得清楚,还要确保信的封面有正确的地址和邮票,这样邮递员才能知道该把信送到哪里,以及信是否已经完整送达。所以,Content-Length头部HTTP协议中扮演着非常重要的角色,它确保了信息能够完整、准确地从发送方传输到接收方。

长风破浪会有时的博客 867

HTTP协议违背事件分析

HTTP协议违背 1.1 请求URI过长 告警信息:the requested URL's length exceeds the capacity limit 描述:HTTP请求URI长度超过默认缓冲区大小,认为其合规 1.2 请求头部过长 告警信息:request exceeds system's limit 描述:HTTP请求头部长度超过默认的缓冲区大小,认为其合规 1.3 响应头部过长 告警信息:request exceeds system's limit 描述:HTTP响应头部

m0_64197404的博客 8205

弱小目标检测跟踪算法研究(5) 基于顶帽变换(Top_hat)算法的红外弱小目标检测之背景抑制

基于顶帽变换(Top_hat)算法的红外弱小目标检测之背景抑制1. 前言2. 顶帽变换(Top_hat)算法3. Matlab仿真4. 小结 1. 前言 红外图像中的弱小目标,目标属性包涵“弱"和“小’’两个方面:“弱’’是指目标在红外波长上所表现出来的强度,具体反映到所拍摄的红外图像上,就是指目标的灰度值;而“小’’是指目标的尺寸大小,也就是前面所述的成像面积很小,反映到红外图像上就是指目标所占的像素数目很少。 SPIE国际光学工程学会(Societyof Photo一0ptical Instrument

sinat_34897952的博客 5265

支付宝收付款监控

调用支付宝网页版最近交易记录,30秒定刷新,可手动刷新,实更新最近交易记录,适用于便利店等开通支付宝扫码需要在电脑查核交易是否到账的人群。在电脑上对支付宝收付款实监控。

上一篇: 关于设置http响应头connection的作用
下一篇: Tomcat 中响应头信息(Http Response Header) Content-Length 和 Transfer-Encoding 之种种
JasonTome
博客等级 码龄15年 68粉丝 219原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值