2009-11-19 1 views
10

XMLHttpRequest (실제로 jQuery)를 사용하는 웹 사이트가 있습니다. 나는 또한 XHR 요청을 그 사이트로 되 돌리는 스크립트 파일을 제공하는 동일한 서버에서 실행중인 다른 사이트를 가지고있다.해당 포트에서로드 된 스크립트 파일과 다른 포트에서 XMLHttpRequest를 사용할 수 있습니까?

http://mysite:50000/index.html

<script src="http://mysite:9000/otherscript.js"></script> 

http://mysite:9000/otherscript.js를 포함 문제가

$.ajax({ 
    url: 'http://mysite:9000/ajax/stuff' 
}); 

포함 -이 작동하지 않습니다. 로드 된 스크립트의 AJAX 요청은 단순히 오류 메시지없이 실패합니다. 내가 구할 수 있었던 것에서 이것은 오래된 동일한 기원 정책입니다. 두 사이트를 모두 관리한다고 가정하면이 작업을 수행하기 위해 할 수있는 일이 있습니까? "document.domain"트릭은 XMLHttpRequest에 대한 일을하지 않는 것처럼 보입니다.

답변

10

아니요 - XHR로는이 작업을 수행 할 수 없습니다. 동일 도메인 정책은 동일한 호스트, 동일한 포트, 동일한 프로토콜에서 매우 제한적입니다. 죄송합니다! 다른 트릭 (iframe, 제목 조작 등)을 사용하여 작동하게해야합니다.

+0

"제목 조작"트릭이란 무엇입니까? – EMP

+0

javascript에 서명 한 경우 FF에서이 작업을 수행 할 수 있습니다. – bmargulies

+2

http://dannythorpe.com/2008/07/28/cross-domain-transport-with-windowname/ 및 http://orensol.com/2009/06/07/cross-domain-ajax-calls-and를 참조하십시오. -iframe-communication-how-to/예. jQuery와 dojo addons가 있습니다. – nitzmahone

10

Access-Control-Allow-Origin 헤더를 추가하면됩니다. 당신이 PHP이 u를위한 트릭을 수행해야

response.writeHead(200,{'Access-Controll-Allow-Origin':' http://example.com'}); 

header("Access-Control-Allow-Origin: http://example.com"); 

또는 Node.js를를 사용하는 경우는 항상 난 그냥 PHP와 유사한 문제를 해결

0

나를 위해 작동 나는 현재 PHP 솔루션이 이것과 직접적으로 관련이 있는지 확신 할 수 없지만 ...) SimpleProxy.php :

<?php 
echo file_get_contents('http://localhost:4567'); 
?> 

그리고 내 XMLHttpRequest에서 'http://localhost:4567'대신 'SimpleProxy.php'를 사용합니다.이 코드는 실제로 내 .js 코드와 동일한 도메인에 요청을 겁니다.