none
XMLHttpRequest 호출 시 Response가 10초 이상 걸리면 커넥션을 Abort 시키는 문제 RRS feed

  • 질문

  • 안녕하세요. Ajax를 이용한 웹 프로그램 개발 중 IE에서 테스트 중, 문의사항이 있어 글 남깁니다.

    Windows 7 IE11 최신버젼이고, 호환성모드 설정 OFF/신뢰할 수 있는 사이트 등록 되어 있습니다.

    크롬에서는 아래 현상이 발생하지 않습니다.

    XMLHttpRequest 를 이용해서 서비스 호출 시에 응답이 10초 이상이 걸릴 경우 

    "

    SCRIPT7002: XMLHttpRequest: 네트워크 오류 0x2ee2, 00002ee2 오류가 발생하여 작업을 완료할 수 없습니다.

    "

    위와 같은 에러가 발생합니다. 개발자모드로 확인 결과 10초 후에 IE에서 커넥션을 강제로 끊는 것으로 보이며

    xhr.send() 시에 timeout 설정도 먹히지 않습니다.

    IE 에서 타임아웃을 늘리려면 어떻게 해야 하나요?


    • 편집됨 zEroReN 2015년 12월 4일 금요일 오전 2:23
    2015년 12월 4일 금요일 오전 1:31

답변

  • 뭔가 환경상의 문제가 있을 것입니다. IE의 XMLHttpRequest가 10초 제한을 갖고 있지는 않습니다.

    인터넷 설정의 "Connections" / "LAN settigns"를 확인해 보거나, IE와 크롬간의 요청/응답에 관한 네트워크 패킷을 개발자 도구 같은 것을 이용해 확인해 보세요.

    관련해서 다음의 글이 검색되는데, 역시 환경상의 문제인 듯 합니다.

    WebSync 3 IE Issue
    ; http://support.frozenmountain.com/hc/en-us/community/posts/201241479-WebSync-3-IE-Issue

    질문 글에서 한가지 궁금한 것이 있는데요. 개발자 모드로 10초 후에 IE에서 커넥션을 강제로 끊는 것으로 보인다고 했는데 그것이 IE 측인지? 서버 측인지? 어떻게 판단하신 거죠? (개발자 도구의 Network 탭에는 그런 정보가 나오지 않는데요....)

    정확하게 연결 끊는 측을 확인하려면 아마 Network Monitor같은 도구를 사용해야 할 것입니다.

    2015년 12월 4일 금요일 오전 4:59

모든 응답

  • 뭔가 환경상의 문제가 있을 것입니다. IE의 XMLHttpRequest가 10초 제한을 갖고 있지는 않습니다.

    인터넷 설정의 "Connections" / "LAN settigns"를 확인해 보거나, IE와 크롬간의 요청/응답에 관한 네트워크 패킷을 개발자 도구 같은 것을 이용해 확인해 보세요.

    관련해서 다음의 글이 검색되는데, 역시 환경상의 문제인 듯 합니다.

    WebSync 3 IE Issue
    ; http://support.frozenmountain.com/hc/en-us/community/posts/201241479-WebSync-3-IE-Issue

    질문 글에서 한가지 궁금한 것이 있는데요. 개발자 모드로 10초 후에 IE에서 커넥션을 강제로 끊는 것으로 보인다고 했는데 그것이 IE 측인지? 서버 측인지? 어떻게 판단하신 거죠? (개발자 도구의 Network 탭에는 그런 정보가 나오지 않는데요....)

    정확하게 연결 끊는 측을 확인하려면 아마 Network Monitor같은 도구를 사용해야 할 것입니다.

    2015년 12월 4일 금요일 오전 4:59
  • 답변 고맙습니다.


    서버에서 뿐이 아니고, 로컬에서 이클립스로 톰캣 기동 후에 테스트해도 동일한 결과가 나타납니다.

    IE에서 끊는다고 판단한 이유는, Network 도구 탭에서 일정시간(이시간이 대략 10초)이 지나면

    "XMLHttpRequest: 네트워크 오류 0x2ee2, 00002ee2 오류가 발생하여 작업을 완료할 수 없습니다."

    라는 메시지가 나오면서 항목들이 "Pending" 에서 "Aborted"로 변경됩니다.


    그 이후로도 서버 로그는 아무것도 등록되지 않다가
     Request에 해당하는 롱 서비스가 끝나 Response를 주려고 할 때, 
    이미 브라우져에서 커넥션이 abort 되어 있으므로, 아래와 같은 익셉션이 발생합니다.

    "An existing connection was forcibly closed by the remote host"

    오래 걸리지 않는 서비스들은 문제가 없으며, 말씀드렸다시피
    동일한 환경에서 브라우져만 크롬으로 바꾸면 문제가 없습니다.


    • 편집됨 zEroReN 2015년 12월 4일 금요일 오전 6:40
    2015년 12월 4일 금요일 오전 6:33
  • 문제를 분리해야 할 것 같은데요. 그럼, XMLHttpRequest 부분만 떼어서 다른 컴퓨터로 로컬상에서 테스트를 해봐야 할 것 같습니다. 혹시 재현이 된다면 최소한의 XMLHttpRequest 사용예를 코드로 올려주시면 더 좋겠고요.
    2015년 12월 7일 월요일 오전 12:17
  • 말씀하신대로 다른 PC에서 테스트 해보니, 재현이 되지 않네요.

    그렇다면 환경문제가 맞다는 이야기인데, 어떤 환경이 차이가 있는지 알기가 어렵네요.

    아무튼, 답변 감사드립니다.

    2015년 12월 8일 화요일 오전 9:30