2011-01-23 3 views
1

매우 간단한간단한 크로스 도메인 API 호출을해야하며 오버 헤드/호환성 문제로 인해 완전한 기능을 갖춘 프레임 워크 (예 : jQuery)를 사용하지 않으려합니다. 이 간단한 아약스 요청은 내가해야 할 모든 것입니다. GET 요청을 http://bar.com에 보내고 http://foo.com 페이지로 전화해야합니다. 그러나 foo.com의 HTTP 헤더에 액세스 할 수 없습니다. 브라우저로 데이터를 반환 할 필요가 없습니다. XMLHttpRequest - 크로스 도메인 API 호출에 문제가 있습니다.

현재 (크롬에)의 중심 코드 hereall 결과를 수행 :

XMLHttpRequest cannot load http://bar.com/api?=x. 
Origin http://foo.com is not allowed by Access-Control-Allow-Origin. 
http://bar.com/api?=x Failed to load resource 

덧붙여,이 호출에서 오류가 발생하더라도, 그것을 잘 통해 제공 bar.com에, 그래서 또 다른 옵션은 기본적으로 그냥 오류 잡기 그것을 무시하고 (?). JS에 익숙하지 않아 다른 브라우저에서 작동하지 않을지 잘 모르겠습니까?

내 위치 : http://code.google.com/p/xmlhttprequest/source/browse/trunk/source/XMLHttpRequest.js - 내 사용에 완전히 과도한 경우 (오버 헤드가 매우 중요) 확실하지 않은가요?

답변

3

XHR을 통해 액세스 할 수있는 특정 도메인을 정의하기 위해 Access-Control-Allow-Origin HTTP 헤더를 설정하지 않는 한이 방법은 항상 실패합니다. 이 문제를 해결 할 수

한 가지 방법은 스크립트 삽입 사용하는 것입니다 다음 설명 할 수없는 것은 그게 전부

function load_script(loc) { 
    var s = document.createElement('script'); 
    s.src = loc; 
    document.getElementsByTagName('head')[0].appendChild(s); 
} 

load_script('http://bar.com/api?=x'); 
+0

을; 나는 주사에 의해 스크립트를로드하고있다 (위와 같다). 그래서 저는 왜 이런 일이 일어나고 있는지 설명하기가 어려울 것입니다. 처음에는 bar.com에서 호스팅되지 않은 jQuery (테스트 용)를 사용했기 때문에 이것이라고 생각했습니다. 하지만이 없어도 액세스 제어 오류가 발생합니다. – malangi

관련 문제