2009-12-30 3 views
8

XML 응답을 받고 내 웹 페이지에 reposne을 표시하기 위해 타사 URL을 치려고합니다. IE 및 Safari 브라우저에서 상태가 200이고 읽기가 4 인 응답이 적절합니다. 하지만 FF3.5와 Crome에서 XMLHTTPRequest 상태는 0이고 reponseText는 빈 문자열로 제공됩니다. 프로토 타입 1.5 버전의 js 파일을 사용하여 일반적인 XMLHTTPRequest Ajax 코드를 작성하는 많은 옵션을 시도했지만 여전히 FF 3.5의 상태와 reponseText는 0과 빈 문자열과 동일하게 유지됩니다.XMLHTTPRequest.status가 0을 반환하고 FireFox 3.5에서 responseText가 비어 있습니다.

이 문제를 해결하는 방법이나이 문제를 일으키는 정확한 원인을 알려 주시면 대단히 감사하겠습니다. 필자도 로컬에서 코드를 실행하려고 시도했지만 웹 서버에 배포하는 것은 여전히 ​​FF로 repsonse가 동일합니다.

다음은 당신이 same origin policy에 충돌 한 것 같습니다 내 코드

<script type="text/javascript" src="prototype_ajax.js"></script> 

<script type="text/javascript" language="javascript"> 

new Ajax.Request("I place my URL Here", { 
    method: 'get', 
    onSuccess : function(transport){ 

     var resultDoc = transport.responseText; 
     var rootObj = loadXML(resultDoc); 

    }, 
    onFailure : function(transport){ 
     alert(' On Failure '+transport) 

    } 
}); 

function loadXML(xmlFile) { 
    var xmlDocElement =null; 
    var xmlDoc = null; 

    if (window.ActiveXObject) { 
    try { 
     // code for IE 
     xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
     xmlDoc.async=false; 
     xmlDoc.loadXML(xmlFile); 
    } catch (e) { 
     alert("inside catch::"+e.message); 
    } 
    } else { 
    // code for Mozilla, Firefox, Opera, etc. 
    parser=new DOMParser(); 
    xmlDoc=parser.parseFromString(xmlFile,"text/xml"); 

    //xmlDocElement=xmlDoc.documentElement; 
    } 

    //alert('loadXML value '+xmlDoc) 
    return xmlDoc; 
} 

</script> 
+0

요청을 실행하는 스크립트가있는 페이지와 동일한 도메인에 "타사 URL"이 있습니까? – CalebD

+0

또한 표준이 아니며 폭넓게 호환되지 않는 DOMParser 또는 XMLDOM이 아닌 XMLHttpRequest를 사용하여 XML 파일을로드해야합니다. – bobince

답변

16

입니다. 상대 경로를 사용해야합니다. 그렇지 않으면 대부분의 브라우저에서 빈 responseText 만 반환합니다.

다음 스택 오버플로 포스트

은 아마도 당신의 문제와 관련되어

매우 간단한 reverse proxy (Apache를 사용하는 경우 mod_proxy)을 설정할 수 있습니다. 이렇게하면 HTTP 서버가 "원격"위치에 대한 프록시 역할을하는 동안 AJAX 요청에서 상대 경로를 사용할 수 있습니다.

mod_proxy에서 역방향 프록시를 설정하는 기본 구성 지정 문은 ProxyPass입니다. 다음과 같이 일반적으로 사용합니다 :

ProxyPass  /web-services/  http://third-party.com/web-services/ 

를이 경우, 브라우저는 /web-services/service.xml를 요청하는 것입니다하지만 서버는 http://third-party.com/web-services/service.xml에 대한 프록시 역할을하여이 서비스를 제공한다.

관련 문제