Programming Summary

프로젝트) Error: Parse Error: Invalid character in chunk size 에러 해결 본문

프로 디지털 아카데미 4기

프로젝트) Error: Parse Error: Invalid character in chunk size 에러 해결

쿠키롱킹덤 2025. 2. 13. 10:39

미리 보는 결론
Http/1.1을 Http/2.0으로 바꾸어 시도해보자

서론

프로 디지털 아카데미 4기 과정이 끝나고.. 좋은 결과가 있었던 칫쏠 프로젝트를 배포해볼까해서 오랜만에 코드를 만지작 거리고 있었다. 오랜만이라 군데군데 문제가 많이 생겼지만, 그 중에서 처음 마주한 이슈에 대해 다루어보고자 한다.

문제 발생

네이버 뉴스를 조회하는 API와 검색어와 유사한 검색어를 조회하는 API에서 다음과 같은 에러가 발생했다.

에러 화면

뭐지? 처음 보는 에러였다. 허용되지 않는 문자열이 chunk에 있다? 왜?

문제 인식

두 API를 살펴보니 둘 다, 타 사이트의 API를 활용하고 있었다. 그래서 해당 API에 문제가 있어 해당 데이터를 못받아 온다는 추론을 하였고, Postman 등으로 테스트를 진행했다. 그래도 같은 에러가 발생하였고, 오직 타 사이트에서만 데이터를 제대로 받아오고 있었다.

문제 시도 과정

1. Request Header를 사이트와 동일하게 일치 시켜주었다.

  • 쿠키와 User Agent까지 일치 시켰음에도 불구하고 해당 에러는 계속 되었다.

2. Transfer-Encoding: chunked 설정을 해주었다.

  • chunk 자체에 이상한 데이터가 들어간 문제라 문제 상황은 지속되었다.

3. Chunk에 대해 찾아보았다.

- HTTP 1.1에서 대용량 정보를 나눠서 보낼 수 있도록 나눈 기준이 chunk라는 사실을 알게 되었다. 해당 부분에서 HTTP 1.1이 아니게 되어서 이상한 문자열이 들어간 것이 아닌지 의심하게 되었다.

문제 원인

HTTP 1.1은 응답이 요청이 온 순서에 따라 처리 된다는 단점이 존재했다. 이를 극복하기 위해 HTTP 2.0이 도입되게 되었다. HTTP 2.0은 TEXT 형태로 데이터를 보내는 것이 아니고, 헤더와 데이터를 압축하여 Frame 단위로 데이터를 나누어 보낸 다는 것을 알게 되었다. 그렇기에 HTTP 2.0으로 변경된 API를 HTTP 1.1로 수신하려 하니 chunk에 이상한 문자열이 들어갔다는 에러가 발생하게 된 것이다.

결론

http 2.0을 지원하도록 변경했다.

 

참고

https://da-nyee.github.io/posts/network-how-to-set-up-nginx-with-http2.0/

https://velog.io/@yonghyeun/HTTP-1.1-%EA%B3%BC-HTTP-2.0