2012-02-07 1 views
4

jQuery 1.7.1의 최신 버전을 사용하여 도메인 간 Ajax 호출을 수행 중입니다. JSONP 응답으로jQuery 도메인 간 Ajax JSONP가 알 수없는 이유로 임의의 실패를 호출 함 일부 IE 버전에서

나는 광범위하게 테스트를 마쳤습니다 : Safari, Chrome, Opera, Firefox, IE6 IE7 IE8 IE9 (호환 모드와 호환되지 않음)는 Win XP와 Win 7 모두 완벽하게 작동합니다. 여러 번의 테스트에서 절대로 실패하지 마십시오. 모든 사용자는 JavaScript 및 쿠키가 설정된 표준 기본 설정을 사용합니다.

프로덕션에서 호출은 거의 실패하지 않지만 거의 수백 개의 사용자가 있습니다. 아마 50 또는 100 중 하나는 나는 때문에 모든 경우에 이런 말이 없습니다

  • 사용자는 jQuery를 사용하여 비 도메인 간 아약스 호출에 문제가 발생하지 않았다. (즉, 상호 도메인 외 호출이 작동하지 않아 JavaScript가 활성화되어 있어야하고 아약스를 지원할 수 있어야합니다).

  • 사용자는 jQuery를 사용하여 교차 도메인 아약스 호출에만 문제가있었습니다. 반복 된 시도 후에도. 나는. 사용자는 문제가 있는지 없는지, 실패하지 않고 작업을하거나 실패하면 실패합니다. 둘 중 하나만. 여기

  • 에 영향을하는 사용자의 사용자 에이전트 문자열의 샘플은 다음과 같습니다

    모질라/5.0 (; MSIE 9.0; 윈도우 NT 6.1; 삼지창/5.0, 호환 FunWebProducts)

    모질라/4.0 (호환 가능, MSIE 8.0, Windows NT 5.1, Trident/4.0, GTB7.2, .NET CLR 2.0.50727, .NET CLR 3.5.30729)

    Mozilla/4.0 (호환 가능, MSIE 8.0, Windows NT 6.1, .NET CLR 3.5.30729, .NET CLR 3.0.30729, Media Center PC 6.0, CPNTDF, ibrytetoolbar_playbryte, .NET4.0C)

IE에만 ​​영향을 미치는 것 같습니다. 다른 브라우저에서는 문제가 없었습니다.

  • 다른 브라우저를 사용하는 경우 문제가 없어져 Chrome을 설치하라고했습니다.

  • 변화하는 브라우저가 작동하면 문제는 연결, 컴퓨터 또는 OS 기반 일 수 없습니다.

나는 IE에서만 발견 할 수있는 설정이어야한다는 것을 배제 할 수 있습니다. 누구든지이 문제가 있었습니까? 누구나 IE 설정이 JSONP 응답으로 교차 도메인 Ajax 호출을 차단할 수 있다는 생각을 갖고 있습니까?

브라우저가 기본값으로 설정되었을 때 이러한 문제가 발생하지 않기 때문에 AJAX/JSONP/교차 도메인의 일반적인 문제 일 수 없습니다. 또한 이미 올바른 방법으로 수행했기 때문에 발생합니다. * timestamp string on 슈퍼 캐싱을 막을 끝 * JSONP 응답 등

나는 전화가 전혀 발사되지 않는 것을 확인할 수있다.

+0

사용하는 코드를 포함해야합니다. 당신을 도울 수 있으려면 적어도 당신이 사용하는'jQuery.ajax'의 모든 옵션을보아야합니다. 또한 일반적인 서버 응답의 전체 헤더가 도움이 될 것입니다. 예를 들어 [Fiddler] (http://www.fiddler2.com/fiddler2/) 또는 [Firebug] (http://getfirebug.com/)를 사용하여 HTTP 트래픽을 잡을 수 있습니다. – Oleg

답변

1

이 문제는 최근에도 나를 괴롭 히고 있습니다. 내 연구에 따르면 jQuery ajax 호출은 IE에서 캐시되므로 IE는 왜 아무 것도 일어나지 않는 이유를 설명하는 데이터를 얻을 필요가 없다고 결정합니다. 이러한 질문은 도움이 Stop jquery load response from being cachedgetjson returning cached data in IE8

캐싱을 사용하지 않도록 설정하는 추가 명시 적 아약스 설정이 IE 메시지 수신에 도움이되는 것 같습니다. jQuery의 모든 ajax 호출은 json이 데이터 유형 일 때 캐싱을 피하기로되어 있지만 작동하는 것으로 확신하지는 않습니다. 이 코드는 나에게 도움이되는 코드이며 getJSON() 또는 ajax() 호출 바로 전에 삽입합니다.

$.ajaxSetup({ cache: false });

1

Fiddler2을 사용하여 HTTP 요청 및 응답을 검토하고 앞뒤로 전달되는 내용을 확인하십시오.

또한 TCP/IP v6에서 문제가 될 수 있습니다. 우리는 IE와 같은 맥락에서 몇 가지 문제를 겪어 왔으며 증상은 거의 항상 산발적입니다.

0

이 자바 스크립트 타이밍 문제 난다. 일들이 자바 스크립트에서 어떤 순서로든 실행되기 때문에 다른 곳에서 문제가 발생할 수 있습니다. IE에서는 jsonp 요청을하지만 어딘가에 뭔가가 스레드에서 폭발하여 요청에 문제를 일으킬 수 있습니다. 내 생각 엔 아마 때때로 innerHtml 또는 innerText 어딘가에 사용되는 경우가 있습니다.

0

사용자가 설치 한 툴바/확장 프로그램/스파이웨어와 관련된 느낌이 들었습니다. 제공된 3 가지 UA 중 하나에는 FunWebProducts가 있고 다른 하나에는 ibrytetoolbar_playbryte가 있고 다른 하나에는 문제를 일으킬 수있는 Google 툴바가 있거나 시스템에서 요청을 가로 채고있는 다른 것일 수 있습니다. 다양한 IE 도구 모음을 설치하여 문제를 재현 할 수 있는지 알아볼 수도 있지만 원치 않는 문제가 발생할 수 있습니다. 그것을 해결하는 것은 불가능할 수도 있습니다.

관련 문제