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를 넘는 헤더를 왜 넘기지??