HTTP标头中的“Content-Length”字段是什么?

时间:2010-05-05 13:02:10

标签: http-headers

这是什么意思?

  1. 带有在标题中指定的编码的编码内容字符串的字节数。
  2. 内容字符串的字符数。
  3. 特别是在“Content-Type:application / x-www-form-urlencoded”的情况下。

9 个答案:

答案 0 :(得分:232)

它是请求或响应正文中的数据字节数。正文是标题下方空白行之后的部分。

答案 1 :(得分:197)

rfc2616

The Content-Length entity-header field indicates the size of the entity-body,
in decimal number of OCTETs, sent to the recipient or, in the case of the HEAD
method, the size of the entity-body that would have been sent had the request
been a GET. 

内容类型是什么并不重要。

post below处的扩展。

答案 2 :(得分:49)

Content-Length标头是一个数字,表示HTTP正文的确切字节长度。 HTTP主体在起始行和标题之后的第一个空行后立即启动。

通常,Content-Length标头用于HTTP 1.1,以便接收方知道当前响应 * 何时完成,因此connection can be reused for another request

* ...或请求,对于具有正文的请求方法,例如POST,PUT或PATCH < / p>

或者,可以省略Content-Length标头,并且可以使用分块Transfer-Encoding header

如果缺少Content-LengthTransfer-Encoding标头,则必须在响应结束时关闭连接。

答案 3 :(得分:41)

一个八位字节是8位。 Content-length是消息正文表示的八位字节数。

答案 4 :(得分:24)

From here

  

Content-Length实体标题字段   表示实体主体的大小,   在十进制数的OCTET中,发送到   收件人,或者在收件人的情况下   HEAD方法,大小   将被发送的实体主体   请求是GET。

   Content-Length    = "Content-Length" ":" 1*DIGIT
     

一个例子是

   Content-Length: 3495
     

应用程序应该使用此字段   表示转移的长度   消息体,除非是这样   被section 4.4中的规则所禁止。

     

任何Content-Length大于或   等于零是有效值。   第4.4节描述了如何确定   消息体的长度,如果是   内容长度未给出。

     

请注意,此字段的含义是   显着不同于   MIME中的相应定义,   它是使用的可选字段   在“消息/外部体”内   内容类型。在HTTP中,它应该是   只要消息的长度可以发送   在被确定之前确定   转移,除非这是禁止的   按照4.4节的规定。

我的解释是,这意味着“在线上”的长度,即*编码“内容”的长度

答案 5 :(得分:7)

来自this page

  

到目前为止,POST最常见的用途是   是将HTML表单数据提交给CGI   脚本。在这种情况下,   Content-Type:标题通常是   应用程序/ x-WWW窗体-urlencoded,   和Content-Length:标题给出   URL编码表单的长度   数据(这是关于URL编码的注释)。   CGI脚本接收消息   身体通过STDIN,并解码它。   这是一个典型的表单提交,   使用POST:

POST /path/script.cgi HTTP/1.0
From: frog@jmarshall.com
User-Agent: HTTPTool/1.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 32

答案 6 :(得分:3)

根据spec

  

Content-Length entity-header字段指示实体主体的大小,以十进制数量的OCTET发送给接收者,或者在HEAD方法的情况下,指示实体主体的大小。如果请求是GET,则已发送。

Content-Length    = "Content-Length" ":" 1*DIGIT
     

一个例子是

Content-Length: 3495
     

应用程序应该使用此字段来指示消息正文的传输长度,除非4.4节中的规则禁止这样做。

     

任何大于或等于零的Content-Length都是有效值。第4.4节描述了如果没有给出Content-Length,如何确定消息体的长度。

     

请注意,此字段的含义与MIME中的相应定义明显不同,后者是“message / external-body”内容类型中使用的可选字段。在HTTP中,只要在传输之前确定消息的长度,就应该发送它,除非4.4节中的规则禁止这样做。

答案 7 :(得分:2)

Content-Length实体标题字段指示发送给接收方的实体主体的大小(以十进制数字表示的OCTET),或者在HEAD方法的情况下,指示实体主体的大小。如果请求是GET,则已发送。

  

Content-Length =“Content-Length”“:”1 * DIGIT

一个例子是

  

内容长度:1024

应用程序应该使用此字段来指示消息正文的传输长度。

在PHP中你会使用这样的东西。

header("Content-Length: ".filesize($filename));

如果是“Content-Type:application / x-www-form-urlencoded”,编码数据将被发送到指定的处理代理,这样您就可以设置要发布的数据的长度或大小。

答案 8 :(得分:1)

请考虑是否有诸如以下标题:

content-encoding: gzip
content-length: 52098
content-type: text/javascript; charset=UTF-8

内容长度压缩消息正文的大小,以“八位字节”(即8位为单位,恰好是“字节”所有现代计算机)。

实际邮件正文的 size 可能是其他内容,可能为150280字节。

字符的数量可以再次不同,可能是150231个字符,因为某些Unicode字符使用多个字节(请注意,UTF-8是标准编码)。

因此,不同的数字取决于您是否关心要传输的数据量,保存的数据量或看到的符号数。当然,不能保证将提供这些标头。