NodeJs에서 Parse Error: HPE_HEADER_OVERFLOW 발생

x-ray(node moudle)를 이용해서 크롤링을 개발하고 있던 중, 다음과 같은 오류를 만나게 되었다.

(node:63533) UnhandledPromiseRejectionWarning: Error: Parse Error
    at Socket.socketOnData (_http_client.js:442:20)
    at Socket.emit (events.js:189:13)
    at addChunk (_stream_readable.js:284:12)
    at readableAddChunk (_stream_readable.js:265:11)
    at Socket.Readable.push (_stream_readable.js:220:10)
    at TCP.onStreamRead (internal/stream_base_commons.js:94:17)
     bytesParsed: 6545,
  code: 'HPE_HEADER_OVERFLOW',

이 오류는 3개의 사이트중 1개의 사이트에서만 발생하였다.

원인을 파악하기 위해 검색을 하다 다음과 같은 내용을 확인하였다.

Node.js의 http 80KB의 Header 크기 제한을 가지고 있고 만약 큰 Header 크기가 필요 하다면, 명령을 실행시 특정 argument를 추가 해야 한다.

해결책은 다음과 같다!

실행하는 node 명령와 함께 --max-http-header-size=크기 argument를 추가 해라

예제)

$> node --max-http-header-size=81000 app.js

에러가 안날때 까지 최대 http header 크기를 키우면 된다.

근데... 이건 에러나는 사이트가 문제 아닌가? 80KB를 넘는 헤더를 왜 넘기지??

참고자료

Posted by lahuman

댓글을 달아 주세요