2017-03-06 8 views
21

는 HTTP 킵 얼라이브 메커니즘에서 알려진 경쟁 조건이 존재한다 : 내가 알고있는 것처럼브라우저는 HTTP Keepalive 경쟁 조건을 어떻게 처리합니까?

, 내 HTTP 클라이언트 필요를 하나 내 HTTP 서버보다 짧은 시간 제한을 가지고 TCP-FIN 또는 TCP-RST를 가져올 때 다시 시도하십시오.

내 질문은 오늘날의 웹 브라우저, 즉 use the HTTP keepalive feature이 어떻게이 경쟁 조건을 처리합니까? 그들은 재 시도합니까?

Google 검색에서 아무 것도 나오지 않아 참조 용으로 기쁩니다.

답변

16

RFC에 따르면 이러한 경우 서버는 408 오류 코드로 응답해야 클라이언트에 연결이 이미 닫혔다는 신호를 보냅니다. RFC 상태 :

클라이언트가 전송 중 미해결 요청을 가지고있는 경우 클라이언트는 새로운 연결에서 해당 요청을 MAY 에게 반복합니다.

이것은 클라이언트 (일명 각 브라우저)가 408 응답을 처리하는 방법을 결정한다는 것을 의미합니다. 이 개 대안이 있습니다

  • 핸들이 정상적으로 : 재 시도 자동으로 새 연결의 나머지 요청, 사용자가
  • 일어난 기본 장애 완전히 모르고 유지하도록 르파 : 사용자에게 실패를 보여주는 적절한 408 오류 메시지가 표시됩니다.

예를 들어, 이전에는 Chrome이 "버그가있는"동작으로 간주하여 처음으로 전환 할 때까지 두 번째 접근 방식을 따르는 것으로 보입니다. Chromium 버그 here에 관련된 버그 스레드와 관련 코드가 here 인 것을 확인할 수 있습니다.

참고 : 연결된 스레드의 최종 이메일에서 읽을 수 있듯이 Chrome은 이러한 연결에서 일부 요청이 성공한 경우에만 이러한 재 시도를 수행합니다. 결과적으로 하나의 요청으로 해당 요청을 재생성하려고 시도 할 경우 408 응답을 반환하면 Chrome에서이 경우 다시 시도하지 않는다는 것을 알게됩니다.

+0

시간을내어 조사해 주셔서 감사합니다. –