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相关推荐

  1. HTTP协议中的Content-Encoding

    HTTP协议中的Content-Encoding 主要内容 1.Content-Encoding是什么     2.内容编码格式gzip和deflate Content-Encoding是什么 Acc ...

  2. Android平台基于asmack实现XMPP协议中的PubSub机制

    Android平台基于asmack实现XMPP协议中的PubSub机制 本文主要介绍,在Android平台上基于asmack包,实现的PubSub机制,在PubSub中最重要的概念是节点Node,几乎 ...

  3. HTTP —— HTTP 协议中的细节(超详细!!)

    JavaEE传送门 JavaEE [前端]JavaScript -- JS的基本语法之数组, 函数- [前端]JavaScript -- WebAPI 目录 HTTP 协议 抓包工具 fiddler ...

  4. soap协议中的soap结构体

    soup协议中的soap结构体 struct SOAP_STD_API soap { short state; /* 0 = uninitialized, 1 = initialized, 2 = c ...

  5. tcp/ip协议中消息传输对帧消息的操作

    2019独角兽企业重金招聘Python工程师标准>>> 接口:Framer.java: package com.tcpip;import java.io.IOException; i ...

  6. HTTP协议中Content-Length的详细解读。

    Content-Length用于描述HTTP消息实体的传输长度the transfer-length of the message-body.在HTTP协议中,消息实体长度和消息实体的传输长度是有区别 ...

  7. 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 问题场景:在我们 ...

  8. Http协议中的方法

    http://blog.csdn.net/macroway/article/details/1428541 孟岩老师将"REST"称为一场Web开发思想的变革,而就我个人理解而言, ...

  9. 理解HTTP协议中的multipart/form-data

    前提 之前在写一个通用HTTP组件的时候遇到过媒体(Media)类型multipart/form-data的封装问题,这篇文章主要简单介绍一下HTTP协议中媒体类型multipart/form-dat ...

  10. HTTP协议中你必须知道的三种数据格式

    实习中的一个主要工作就是分析 HTTP 中的协议,自己也用 Python 写过正则表达式对 HTTP 请求和响应的内容进行匹配,然后把关键字段抽离出来放到一个字典中以备使用(可以稍微改造一下就是一个爬 ...

最新文章

  1. javascript - 全局与局部作用域
  2. 【Python-ML】SKlearn库性能指标-混淆矩阵和F1
  3. VS2019注释整段代码
  4. 洛谷 P3378 【模板】堆
  5. matlab怎么求rmse_从零开始的matlab学习笔记——(33)绘图工具栏
  6. SQL Server使用
  7. CUMCM→MCM/ICM→NPMCM:关于国赛(全国大学生、研究生、博士研究生数学建模竞赛)和美赛中的数学的专业词汇详细攻略—美国数学建模竞赛
  8. 破防了,原来这才是机房运维的正确方法
  9. 数据分析与挖掘实战-航空公司客户流失分析
  10. 二维码生成及批量生成并打包
  11. Delphi网络游戏外挂制作
  12. android文本框带图片格式,android 带图片的文本框
  13. Spring之Specification复杂查询和Criteria查询
  14. 转-超声波CX20106A的内部电路图
  15. 云计算学习路线教程大纲课堂笔记:构建企业级WIKI及工单系统
  16. Kony grabs funding to build mobile business apps
  17. VIVADO时序约束之Input Delay(set_input_delay)
  18. 运维不是修电脑!月薪30K的高级运维告诉你,学会这些就能逆袭
  19. 苹果广告词:一直以来让我深有感触的一段话
  20. linux网卡驱动离线安装_linux系统网卡驱动下载和安装

热门文章

  1. 看“找你妹”的爆红:将营销融入产品
  2. generated always
  3. 大学计算机没过要补考吗,大学补考容易过吗
  4. 英语语法---冠词详解
  5. JS 校验身份证号真实性
  6. 环评3c语言编写多河段bod-do耦合矩阵模型源程序,《环境质量评价学》PPT课件.ppt...
  7. App线上推广:从0到100万的质变与运营
  8. Painter X Artists(艺术家)画
  9. 本题要求统计给定整数M和N区间内素数的个数并对它们求和。
  10. 地球科学数据集成可视化软件(IDV)