2016-06-23 3 views
1

일부 노드 문서를 읽었으며 요청 헤더/본문/데이터가 어떻게 전송되는지 궁금합니다.http 요청 데이터 전송 이해 - nodejs

nodejs의 docs에서 본문을 구문 분석하기위한 샘플 코드를 보여줍니다. 따라서 데이터가 스트리밍되고 각 청크를 구문 분석 할 수있는 문자열로 푸시하면됩니다.

헤더에서 동일한 문제가 발생하지 않는 이유는 무엇입니까? 대신에 직접받을 수 있습니다. 누구나 이것이 왜이 데이터가 전송/수신되는 방식을 설명하는 출처인지 설명 할 수 있습니까?

방법, 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^승인을 보내면) 호스트는 서버로 보낼 수있는 데이터의 양을 확인하고 데이터를 보냅니다 단계에 따라 :

  • 하면 데이터의 크기, 일부 데이터가 전송 및 재전송해야하는 데 실패 아마도 경우
  • (일반적으로 8192 바이트) 협상 크기

nodeJs에서 해당 데이터 스트림을 읽으려면 다음을 사용하십시오.

request.on(data,function(){}))