ERR_HTTP2_PROTOCOL_ERROR 200
상황
- zip 파일 다운로드시 로딩바 구현을 위해 프론트에서는 content-length 값이 필요했다. ZipOutputStream의 size를 구할 수 없어 임의로 zip 하기 전의 파일들의 총합을 구해 전달했다.
- 그랬더니 브라우저 네트워크탭에서는 파일이 다 받아졌는데, 실제로는 다운로드가 되지 않았다.
- 브라우저 콘솔에는
ERR_HTTP2_PROTOCOL_ERROR 200
출력되었다.
원인
- 50 bytes 짜리 파일 2개를 압축한다고 가정했을때, 압축 전 두 파일의 총합은 100 bytes
- 압축 후에는 약 90 bytes
- 실제 content-length 는 90 이어야 맞는데, 난 100을 설정해서 보냄
- 실제 파일은 다 다운로드 되어도 헤더의 content-length를 100으로 해두었기때문에 아직 다 안받아진것처럼 오류 발생
해결
- 압축된 zip 파일의 size를 content-length에 넣어 보내야한다
- 하지만 압축된 zip 파일 사이즈를 구할 수가 없어서 결국 원래 방식대로 하되 다른 커스텀헤더에 넣어서 보냈다
참고