프록시를 통한 ERR_INVALID_CHUNKED_ENCODING 조사
응답의 프레이밍, 중단 지점, 프록시 경로 로그를 비교해 응답이 어디서 불완전하거나 잘못되는지 찾아냅니다.
ERR_INVALID_CHUNKED_ENCODING 는 응답을 완전한 chunked 메시지로 디코딩할 수 없었다는 뜻입니다. 일부 콘텐츠가 정상적으로 도착했다고 해서 나머지 응답이 유효했다는 증거는 아닙니다.
- 응답 헤더와 첫 번째 디코더 오류를 보존하십시오. 어느 구성 요소가 이를 보고했는지, 메시지가 chunked 로 선언되었는지 확인하십시오.
- 중단 지점을 찾으십시오. HTTP/1.1 chunked 인코딩에는 크기, 해당 데이터, 구분자, 종료 chunk 가 필요하며 해당되는 경우 trailer 도 포함됩니다. 조기 연결 종료와 잘못된 크기는 서로 다른 단서입니다.
- 동일한 통제된 요청을 의도한 경로에서 비교하십시오. 요청을 프록시 및 upstream 로그와 대조하십시오. 그 지점에서 upstream 종료, 중간 변환, 애플리케이션 취소를 찾아보십시오.
TCP 버퍼 크기로 HTTP 프레이밍을 추론하지 마십시오. socket 읽기 한 번에 chunk 의 절반이나 여러 chunk 가 들어 있을 수 있으며, 그 뒤 라이브러리가 디코딩된 콘텐츠를 다른 버퍼로 노출할 수 있습니다. JSON 레코드에는 또 다른 경계가 있습니다. 프록시는 원래 패킷 경계를 유지하지 않고 응답을 다시 프레이밍할 수 있습니다.
증거가 오래된 Squid 구현을 가리킨다면 그 결론과 함께 릴리스 번호를 남기십시오. Squid 2.x 패치 조언은 현재의 모든 릴리스를 설명하지 않습니다. 비교하는 동안 정상적인 디코딩과 인증서 검증을 유지하십시오. 오류를 억제하면 불완전한 파일이 성공한 다운로드처럼 보일 수 있습니다.