실제로 http 응답이 종료되는지 어떻게 알 수 있나요?

실제로 http 응답이 종료되는지 어떻게 알 수 있나요?

일부 정적 파일을 제공하는 웹 서버가 있습니다. 서버의 부하가 심한 경우에는 200 HTTP 상태로 부분 응답을 보냅니다.

이것은 내 앱의 문제입니다. 왜?

  • 이러한 파일은 정적이고 절대로 변경되어서는 안 되기 때문에 오랫동안 파일을 유지하기 위한 응답에 캐시 헤더를 설정했습니다.
  • 때때로 일부 최종 사용자는 HTTP 상태가 200인 자바스크립트 파일의 일부만 가져옵니다.
  • 이 파일은 브라우저에 의해 캐시되고 내 앱이 손상됩니다!

저는 2개의 다른 웹 서버(Jetty 및 Apache)를 시험해 보았는데, 앞에 로드 밸런서(haproxy)가 있든 없든 두 서버 모두에서 문제가 발생하는 것을 확인했습니다. 이것은 웹 서버 자체가 아니라고 생각하게 만듭니다. 하지만 이는 부하가 심한 웹 서버에서 예상되는 동작일까요?

이 문제의 원인을 확인하거나 문제로부터 보호하려면 어떻게 해야 합니까?

편집: 이 요청에는 Content-Length응답 헤더도 제공됩니다.

답변1

발생한 문제에 대한 패킷 캡처가 필요합니다. 모든 작업이 제대로 작동하지만 최종 사용자의 브라우저에 버그가 있거나 버그가 있는 웹 프록시, 방화벽 또는 파일을 자르는 NAT 게이트웨이 뒤에 있을 수도 있습니다.

해당 JS 파일을 제공할 때 서버/역방향 프록시/로드 밸런서가 Content-Length 및 Transfer-Encoding 헤더를 처리하는 방법을 살펴보고 싶을 수도 있습니다. 또한 다음 항목에 대한 규칙을 검토하세요.RFC 7230 섹션 3.3.2, "콘텐츠 길이"그리고 다음 섹션 중 일부.

관련 정보