2017-10-31 7 views
1

응답을 받기까지 너무 오래 걸리면 IE11이 자동으로 AJAX 요청을 중단합니까? Angular4를 사용하여 매우 간단한 호출을 작성합니다.IE11 Ajax가 5 분 후에 중단됩니다.

this.http.post(url, requestJson, options) 
    .map((response: Response) => <string>response.json()) 

그러나 이것은 응답하기 전에 서버에서 꽤 오래 실행됩니다. IE에서 5 분이 지나면 요청을 중단합니다. Chrome에서는 요청이 중단되는 것을 보지 못했습니다.

요청이 중단되면 다음 오류가 발생합니다. XMLHttpRequest : 네트워크 오류 0x2ef3, 오류 00002ef3으로 인해 작업을 완료 할 수 없습니다.MS's documentation에 따라 ERROR_INTERNET_INCORRECT_HANDLE_STATE를 의미합니다.

Wireshark를 보면 IE가 TCP 재설정을 동시에 보내고있는 것을 볼 수 있습니다.

사이트와 서버를 로컬에서 실행할 때 요청이 중단되지 않습니다.

중단되지 않도록이 시간 제한을 수정할 수있는 방법이 있습니까? 참고 : 우리가 취해야 할보다 장기적인 해결책은이 요청의 동작을 수정하여 응답을 받기 전에 요청이 수 분 동안 지연되지 않도록하는 것입니다 (장기 실행 요청이 수행 될 때 어떤 종류의 알림 시스템을 설정합니다). 문제가 해결되지

것들 내가 해봤 : 나는 0 내가 큰 값으로 관찰의 시간 제한을 설정 한

  • 에 XMLHttpRequest 객체의 타임 아웃을 설정 한

    • .
  • +0

    * 로컬에서 * 서버 문제 일 가능성이있는 경우 ... –

    +0

    분명히 가능하지만 실제로 Chrome에서 작동하며 IE가 5 분이 지나면 TCP 재설정을 보내고 있다고 생각합니다. IE의 동작과 관련이있을 수 있음을 시사합니다. – FreakyFred

    답변

    1

    대기 시간이 길다면 웹 소켓 또는 긴 폴링으로 전환하는 것이 좋습니다. 이것은 클라이언트/서버 통신을 통신의 긴 지연에 더 적합한 것으로 이동시키는 적절한 응용 프로그램처럼 보입니다. 나는 IE11이 이런 식으로 행동하는 이유를 모르지만 오랜 기다림이 기다리고 있고 서버가 한 번에 더 많이로드되면 응답 시간이 더 지연 될 수 있습니다. 이것이 당신을위한 선택입니까?

    +0

    우리가 미래에 찾고있는 것은 분명합니다. 우리의 응답이 생성되는 시점 (즉, 요청을 즉시 완료 할 수있는 시점)에 대해 경고 시스템을 설정하는 것과 같은 SignalR과 같은 것입니다. 그러나, 그것은 조금 늦게 내려갔습니다. 5 분 이상 AJAX 요청을하는 것은 이상적인 상황이 아닙니다. – FreakyFred