2011-01-12 3 views
5

XMLHttpRequest를 사용하면 페이지 자체가 호스팅되는 위치와 다른 도메인에있는 문서에 대한 연결을 열 수 없습니다.동일한 서버이지만 다른 포트에서 XMLHttpRequest 크로스 사이트 스크립팅

하지만 다른 포트는 무엇입니까? 예를 들어

나는 웹 서버가 그렇게 webaddress이 같을 것이다 포트 80에서 수신 내 컴퓨터에서 실행이 :

http://localhost:80/mypage.html 

내가 아약스 요청을 처리하기위한 것입니다 로컬 호스트에서 실행중인 다른 웹 서버를 가지고 있지만 다른 포트에서 수신 대기합니다. 그래서 mypage.html의 javascript는 다음과 같습니다 :

var xmlhttprequest = new XMLHttpRequest(); 
xmlhttp.open("GET", "http://localhost:1234/?parameters", true); 
xmlhttp.send(); 

이 것이 작동할까요? 아니면 보안 예외를 줄 것인가?

답변

8

다른 포트를 사용하는 것은 실제로 사이트 간 스크립팅으로 간주됩니다.

JSONP을 비롯하여 (일반적으로 데이터를 전송할 수있는) 여러 가지 잘 알려진 방법을 사용할 수 있으며 응답을 사용할 수 있습니다 (즉, xss 제약 조건 하에서 정상적으로 수행 할 수없는 작업). 페이지를 클릭하여 데이터를로드하십시오.

5

실제로는 다른 서버 (적어도 다른 서버 인스턴스, 사용자가 제어 할 수없는 서버)에서는 실행되지 않습니다.

헤더에 액세스 제어 허용 원점 : http://yourdomain:1234/을 추가 할 수 있으며, Google은 출생지 자원 공유를 위해 Google에 추가 할 수 있습니다. 그것은 relativelly 새로운, 모든 브라우저가 이것에 대해 알고있는 것은 아닙니다. 또는 jQuery를 사용할 수 있습니다 (http://softwareas.com/cross-domain-communication-with-iframes에 대한 자세한 내용 참조).

관련 문제