2016-06-23 13 views
1

私はいくつかのノードのドキュメントを読んできましたが、リクエストヘッダー/ボディ/データがどのように送られるのか興味があります。httpリクエストのデータ転送を理解する - nodejs

nodejsのドキュメントでは、本文を解析するためのサンプルコードが表示されます。したがって、データがストリームされ、各チャンクを文字列にプッシュして解析し、解析することができます。

ヘッダーで同じことが起こっていないのはなぜですか?代わりに、ただそれらを直接受け取ることができます。誰がこれがなぜであるか説明したり、このデータが一般的にどのように送受信されているかを説明する情報源を持つことはできますか?

方法、URLおよびヘッダー

var headers = request.headers; 
var userAgent = headers['user-agent']; 

リクエストボディ

var body = []; 
request.on('data', function(chunk) { 
    body.push(chunk); 
}).on('end', function() { 
    body = Buffer.concat(body).toString(); 
    // at this point, `body` has the entire request body stored in it as a string 
}); 

出典:https://nodejs.org/en/docs/guides/anatomy-of-an-http-transaction/

答えて

0

私の推測では、それは3ウェイハンドシェイクのネゴシエーションの問題だということです。私は、ホスト(ブラウザ)がサーバーにSYN ^同期を送信する際に、交渉の最初のステップで、必須のヘッダーをサーバーが読み取ることができると確信しています。

ネゴシエーションが終了すると(サーバはSYN-ACK ^同期アクノリッジで応答し、ホストはACK^ACKを送信します)、ホストはどれくらいのデータをサーバに送信できるかを調べ、データが送信されます段階的に、依存:

  • あなたのデータのサイズ、一部のデータが送信され、再送信する必要があることに失敗したかもしれない場合
  • 窓が
  • (通常は8192バイトです)交渉のサイズ

nodeJsで、そのデータストリームを読み取るには、次のコードを使用します。

request.on(data,function(){})) 
関連する問題