2012-06-21 2 views
2

local.mydomain.com에서 실행중인 사이트의 로컬 빌드가 있습니다. AWS 서버에서 실행중인 api.mydomain.com에 대해 ajax 요청을 만들고 JSON을 반환합니다. 크롬에서는 API를 아무 문제없이 호출 할 수 있습니다. 하지만 IE에서는 Access Denied가 발생합니다.크로스 하위 도메인 AJAX는 IE가 아닌 Chrome에서 작동합니다.

조사한 후에는 교차 (하위) 도메인 제한 인 것 같습니다. 그러나 나는이 제한이 두 브라우저 모두에 적용될 것이라는 인상을 받았다. 아무도 여기에서 잘못 될 수있는 이유와 일부 브라우저에서 작동하지 않는 이유를 다른 사람이 볼 수 있습니까?

답변

7

IE8 +에서 사용하기를 원하는 전송 객체에 문제가있는 것처럼 보입니다. jQuery는 ActiveXObject (IE 용) 또는 XMLHttpRequest (기타 모든 것)를 사용하지만 IE 8 이상에서는 Ajax 용 XDomainRequest가 필요합니다.

당신이 할 수있는 것은이 같은 $ .ajaxSettings.xhr를 통해 사용자 정의 XHR 객체를 반환하고,

// override xhr for browser that use XDR 
if ('XDomainRequest' in window && window.XDomainRequest !== null) { 

    // override default jQuery transport 
    jQuery.ajaxSettings.xhr = function() { 
     try { return new XDomainRequest(); } 
     catch(e) { 
     console.log('test'); 
     } 
    }; 

    // also, override the support check 
    jQuery.support.cors = true; 
} 

나는 여기에 주제에 대한 토론에서이 코드를 뽑아 : http://graphicmaniacs.com/note/getting-a-cross-domain-json-with-jquery-in-internet-explorer-8-and-later/

확실히 받아 같은 문제를 겪고 있다고 생각한다면 그걸보세요.