HTTP协议中的Content-Length
Content-Length是什么
Content-Length 是一个实体消息首部,用来指明发送给接受方的消息主体的大小。Content-Length如果存在并且有效地话,则必须和消息内容的传输长度完全一致。否则就会导致异常 (特别地, HTTP1.0中这个字段可有可无)
Content-Length
首部指示出报文中实体主体的字节大小。这个大小是包含了所有内容编码的, 比如,对文本文件进行了gzip
压缩的话,Content-Length
首部指的就是压缩后的大小而不是原始大小。
看下以下几种情况:
Content-Length == 实际长度
const http = require('http');
const server = http.createServer();
server.on('request', (req, res) => {if(req.url === '/') {res.setHeader('Content-Type', 'text/plain');res.setHeader('Content-Length', 10);res.write("helloworld");}
});
server.listen(8081, () => {console.log("成功启动");
});
Content-Length < 实际长度
res.setHeader('Content-Length', 8);
此时输出结果为 hellowor
那后面的字符哪里去了?实际上在http的响应体中直接被截取了。
Content-Length > 实际长度
如果Content-Length 比 实际长度大,服务端/客户端读取到消息结尾后,会等待下一个字节,自然会无响应直到超时。
res.setHeader('Content-Length', 12);
此时浏览器显示结果:
不确定Content-Length的值怎么办
如果不确定Content-Length的值怎么办,此时我们应该使用Transfer-Encoding:chunked
该字段表示分块传输数据,设置这个字段会自动产生两个效果:
- Content-Length 字段会被忽略
- 基于长连接持续推送动态内容
参考资料:
- 《HTTP权威指南》
- 用了这么久HTTP, 你是否了解Content-Length和Transfer-Encoding ?
HTTP协议中的Content-Length相关推荐
- HTTP协议中的Content-Encoding
HTTP协议中的Content-Encoding 主要内容 1.Content-Encoding是什么 2.内容编码格式gzip和deflate Content-Encoding是什么 Acc ...
- Android平台基于asmack实现XMPP协议中的PubSub机制
Android平台基于asmack实现XMPP协议中的PubSub机制 本文主要介绍,在Android平台上基于asmack包,实现的PubSub机制,在PubSub中最重要的概念是节点Node,几乎 ...
- HTTP —— HTTP 协议中的细节(超详细!!)
JavaEE传送门 JavaEE [前端]JavaScript -- JS的基本语法之数组, 函数- [前端]JavaScript -- WebAPI 目录 HTTP 协议 抓包工具 fiddler ...
- soap协议中的soap结构体
soup协议中的soap结构体 struct SOAP_STD_API soap { short state; /* 0 = uninitialized, 1 = initialized, 2 = c ...
- tcp/ip协议中消息传输对帧消息的操作
2019独角兽企业重金招聘Python工程师标准>>> 接口:Framer.java: package com.tcpip;import java.io.IOException; i ...
- HTTP协议中Content-Length的详细解读。
Content-Length用于描述HTTP消息实体的传输长度the transfer-length of the message-body.在HTTP协议中,消息实体长度和消息实体的传输长度是有区别 ...
- The maximum string content length quota (8192) has been exceeded while reading XML data
原文: The maximum string content length quota (8192) has been exceeded while reading XML data 问题场景:在我们 ...
- Http协议中的方法
http://blog.csdn.net/macroway/article/details/1428541 孟岩老师将"REST"称为一场Web开发思想的变革,而就我个人理解而言, ...
- 理解HTTP协议中的multipart/form-data
前提 之前在写一个通用HTTP组件的时候遇到过媒体(Media)类型multipart/form-data的封装问题,这篇文章主要简单介绍一下HTTP协议中媒体类型multipart/form-dat ...
- HTTP协议中你必须知道的三种数据格式
实习中的一个主要工作就是分析 HTTP 中的协议,自己也用 Python 写过正则表达式对 HTTP 请求和响应的内容进行匹配,然后把关键字段抽离出来放到一个字典中以备使用(可以稍微改造一下就是一个爬 ...
最新文章
- javascript - 全局与局部作用域
- 【Python-ML】SKlearn库性能指标-混淆矩阵和F1
- VS2019注释整段代码
- 洛谷 P3378 【模板】堆
- matlab怎么求rmse_从零开始的matlab学习笔记——(33)绘图工具栏
- SQL Server使用
- CUMCM→MCM/ICM→NPMCM:关于国赛(全国大学生、研究生、博士研究生数学建模竞赛)和美赛中的数学的专业词汇详细攻略—美国数学建模竞赛
- 破防了,原来这才是机房运维的正确方法
- 数据分析与挖掘实战-航空公司客户流失分析
- 二维码生成及批量生成并打包
- Delphi网络游戏外挂制作
- android文本框带图片格式,android 带图片的文本框
- Spring之Specification复杂查询和Criteria查询
- 转-超声波CX20106A的内部电路图
- 云计算学习路线教程大纲课堂笔记:构建企业级WIKI及工单系统
- Kony grabs funding to build mobile business apps
- VIVADO时序约束之Input Delay(set_input_delay)
- 运维不是修电脑!月薪30K的高级运维告诉你,学会这些就能逆袭
- 苹果广告词:一直以来让我深有感触的一段话
- linux网卡驱动离线安装_linux系统网卡驱动下载和安装