source

IE 11의 이상한 AJAX 버그

lovecheck 2023. 7. 31. 21:28
반응형

IE 11의 이상한 AJAX 버그

저는 현재 원격 웹 서비스를 사용하기 위해 CORS를 사용하는 순수 HTML 및 JavaScript 기반 웹 앱을 개발하고 있지만 IE 11이 GET 요청을 하는 데 어려움을 겪고 있습니다.재미있는 것은 우리가 IE8/9/10에서 11이 아니라 잘 작동했다는 것입니다.

문제는 IE 11이 시간 초과되어 서버의 응답을 기다리지 않는 것처럼 보인다는 것입니다.Ajax 상담 내용은 다음과 같습니다.

$.ajax(url, {
    dataType: 'json',
    complete: complete,
    type: 'GET',
    global: true,
    success: success,
    crossDomain: true,
    xhrFields: {
        withCredentials: true
    }
});

네트워크 탭과 Fiddler를 사용하면 IE에서 요청을 보내지 않는 것을 볼 수 있습니다.

누구 아이디어 있어요?

편집: 캐시를 이미 시도했다는 것을 깜빡했습니다. false.또한 개발 도구에서 문서 모드를 Edge에서 9로 전환했다가 다시 되돌리면 캐시가 참이든 거짓이든 IE를 지우고 다시 시작한 후에도 매번 호출이 작동한다는 점에서 매우 이상한 점을 발견했습니다.매우 기괴합니다. :\

IE는 캐싱으로 유명합니다.캐시된 응답이 없는지 확인합니다.설정할 수 있습니다.cache에의 재산적 가치.false또는 캐시된 응답이 되지 않도록 고유한 타임스탬프를 URL에 추가합니다.메소드를 사용하여 고유한 타임스탬프를 얻을 수 있습니다.

캐시 속성 설정

$.ajax(url, {
    dataType: 'json',
    cache : false,
    //Other things ...
}

URL에 고유 타임스탬프 추가

var url="somePage.php?"+$.now();
//Use this url now for making the ajax call

$.now()메소드는 식으로 반환된 숫자의 약어입니다.(new Date).getTime()

확실하지 않습니다. 캐시일 수도 있습니다. 속성 "cache: false"를 설정해 보십시오.

그렇지 않으면 URL 끝에 날짜 시간을 추가하여 매번 다른 URL이 있고 IE가 캐시하지 않습니다.

url +""+ (new Date()).getTime()

머리글 태그에 사용합니다.

<meta http-equiv="X-UA-Compatible" content="IE=9,chrome=1">

로컬을 실행 중인 경우 crossDomain을 false로 전환해 보십시오.저는 그것에 집착하는 데 꽤 많은 시간을 보냈습니다.Chrome은 crossDomain을 처리했지만 IE에서는 crossDomain을 사용하지 않고 true로 설정하면 자동으로 실패합니다.

이 스레드가 오래된 것은 알지만, 이 문제가 발생하는 경우 추가로 확인하는 것과 마찬가지로 신뢰할 수 있는 사이트 영역 설정이 도메인 간의 액세스를 허용하는지 확인하십시오.기타의 첫 번째 설정은 원하는 설정입니다.

여러 도메인에 걸쳐 데이터 원본 액세스를 "사용 가능"으로 설정합니다.

언급URL : https://stackoverflow.com/questions/20219590/strange-ajax-bug-with-ie-11

반응형