web-dev-qa-db-ja.com

HTTPヘッダーの「Content-Length」フィールドは何ですか?

どういう意味ですか?

  1. Headerで指定されたエンコーディングを持つエンコードされたコンテンツ文字列のバイト数。
  2. コンテンツ文字列の文字数。

特に「Content-Type:application/x-www-form-urlencode」の場合。

236
Eonil

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. 

Content-typeが何であるかは関係ありません。

下の ポストでの拡張

199
WhirlWind

要求または応答の本文に含まれるデータのバイト数です。本文は、ヘッダーの下の空白行の後にくる部分です。

233
Tom Cabanski

Content-Lengthヘッダーは、HTTP本体の正確なバイト長を示す数値です。 HTTP本文は、開始行とヘッダーの後にある最初の空行の直後から始まります。

通常、HTTP 1.1ではContent-Lengthヘッダーが使用されるため、受信側は現在の応答がいつ送信されたのかを認識できます。* 終了したので、 接続は別の要求に再利用できます

* ... POST、PUT、PATCHなどのボディを持つリクエストメソッドの場合はrequest

あるいは、Content-Lengthヘッダーを省略して、チャンク Transfer-Encodingヘッダー を使用することもできます。

Content-LengthヘッダーとTransfer-Encodingヘッダーの両方が見つからない場合は、応答の最後に接続を閉じる必要があります。

50
spender

1オクテットは8ビットです。 content-lengthは、メッセージ本文が表すオクテット数です。

41
itsproject

ここから

Content-Length entity-headerフィールドは、受信者に送信された、10進数のOCTETでのentity-bodyのサイズ、またはHEADメソッドの場合はentity-bodyのサイズを示します。要求がGETであれば、それは送信されたはずです。

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

例は

   Content-Length: 3495

アプリケーションは、これが セクション4.4 の規則によって禁止されていない限り、メッセージ本体の転送長を示すためにこのフィールドを使用すべきである。

ゼロ以上の任意のContent-Lengthは有効な値です。セクション4.4は、Content-Lengthが与えられていない場合にメッセージ本体の長さを決定する方法を説明します。

この分野の意味がそれが "message/external-body" content-typeの中で使われる任意選択の分野であるMIMEの対応する定義とはかなり異なることに注意してください。 HTTPでは、セクション4.4の規則で禁止されていない限り、メッセージの長さが転送前に決定できるときはいつでも送信されるべきです(SHOULD)。

私の解釈では、これは「通信中」の長さ、つまり*エンコードされたコンテンツの長さを意味します。

24
Daniel Renshaw

このページから このページ

POSTの最も一般的な用途は、HTMLフォームデータをCGIスクリプトに送信することです。この場合、Content-Type:ヘッダは通常application/x-www-form-urlencodeされ、Content-Length:ヘッダはURLエンコードされたフォームデータの長さを与えます(ここではURLエンコードに関するメモです)。 CGIスクリプトはSTDINを介してメッセージ本文を受け取り、それをデコードします。これがPOSTを使った典型的なフォーム送信です。

POST /path/script.cgi HTTP/1.0
From: [email protected]
User-Agent: HTTPTool/1.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 32
7
Theresa

の仕様によると

Content-Length entity-headerフィールドは、受信者に送信された、10進数のOCTETでのentity-bodyのサイズ、またはHEADメソッドの場合はentity-bodyのサイズを示します。要求がGETであれば、それは送信されたはずです。

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

例は

Content-Length: 3495

アプリケーションは、これがセクション4.4の規則によって禁止されていない限り、メッセージ本体の転送長を示すためにこのフィールドを使用すべきである。

ゼロ以上の任意のContent-Lengthは有効な値です。セクション4.4は、Content-Lengthが与えられていない場合にメッセージ本体の長さを決定する方法を説明します。

この分野の意味がそれが "message/external-body" content-typeの中で使われる任意選択の分野であるMIMEの対応する定義とはかなり異なることに注意してください。 HTTPでは、セクション4.4の規則で禁止されていない限り、メッセージの長さが転送前に決定できるときはいつでも送信されるべきです(SHOULD)。

3
Bozhidar Batsov

Content-Length entity-headerフィールドは、受信者に送信された、10進数のOCTETでのentity-bodyのサイズ、またはHEADメソッドの場合はentity-bodyのサイズを示します。要求がGETであれば、それは送信されたはずです。

内容の長さ= "内容の長さ" ":" 1 * DIGIT

例は

コンテンツの長さ:1024

アプリケーションはメッセージボディの転送長を示すためにこのフィールドを使用するべきである(SHOULD)。

PHPでは、このようなものを使用します。

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

「Content-Type:application/x-www-form-urlencode」の場合、エンコードされたデータは指定された処理エージェントに送信されるので、投稿するデータの長さまたはサイズを設定できます。

2
Gaurav Jassal