웹 페이지를 다운로드해야하는 브라우저/프록시 지향 프로젝트에서 작업하고 있습니다. 웹 서버에 사용자 정의 HTTP 요청을 보내면 서버 응답을 듣기 시작합니다.HTTP 서버에서 데이터 전송 완료 시점 알아보기
응답을 읽을 때 응답 헤더에서 Content-Length : -row를 확인합니다. 그 중 하나를 얻으면, 내가받은 데이터의 바이트 수를 항상 알고 있기 때문에 서버가 언제 데이터를 전송했는지를 판단하기가 쉽습니다.
서버에 Content-Length 헤더가 없으며 추가 요청을 위해 연결을 유지하는 경우 문제가 발생합니다. 예를 들어 Google 서버는 gzipped-content로 응답하지만 콘텐츠 길이는 포함하지 않습니다. 더 많은 데이터 대기를 중단하고 연결을 닫을 때 어떻게 알 수 있습니까?
잠시 동안 데이터를받지 못했을 때 연결을 닫는 데 시간 초과 값을 사용하는 것을 고려해 보았지만, 잘못된 방법으로 보입니다. 예를 들어 Chrome은 나와 같은 페이지를 다운로드 할 수 있으며 언제 연결을 닫아야하는지 정확하게 알고있는 것 같습니다.
이것이 압축 된 데이터에도 적용되는 경우이를 해결하는 올바른 방법 인 것으로 보입니다. (Content-Length가없는 일부 요청에서 Transfer-Encoding : 헤더를 본 이후로 가정합니다). 감사! – Accatyyc