2010-05-26 11 views
0

mainFrame의 URL이 a.abc.com에서 b.abc.com으로 변경되면 다음 JS가 실패합니다.동일한 원본 문제를 해결하는 방법

top.frames [ "mainFrame"]. location.href = "/Users/xuenn.aspx?backUrl="+ top.frames [ "mainFrame"]. location.href.split ("?") [0 ]; http://b.abc.com에서 특성 같이 location.href를 얻을 수 http://a.abc.com 거부 ​​ 권한 :

는 오류 메시지입니다.

누구나 어떻게 해결할 수 있을까요? 아니면 다른 솔루션을 생각할 수 있습니까?

+0

서버에서 무엇을 찾고 계십니까? JSON이라면 JSONP로 대신 빌드 해보십시오. 텍스트, HTML 또는 XML을 다시 읽는다면 더 어렵습니다. – Andrew

+0

그리고 서버에서 아무것도 가져 오려고하는 것을 어떻게 추론 했습니까? ;) –

답변

0

다른 도메인에서 [window] s에 대한 액세스는 동일 원산지 정책에 의해 금지되어 있지만 location 속성은 쓰기 가능합니다. 이 경우

, 당신은 document.domain = foo을 사용하거나 필요하거나 다른 방법으로 당신이 재산을 읽을 필요가 없도록 #http://b.abc.com/ 또는 ?b=http://b.abc.com/를 사용하여 예를 들어, a.abc.com에 예상되는 URL을 전달합니다.

첫 번째 경우에는 iframe을 사용하여 데이터를 서버에 비동기 적으로 게시/업로드하는 스크립트에 문제가 발생할 수 있으므로 document.domain을 설정 한 후에 더 이상 iframe 콘텐츠에 액세스 할 수 없습니다.

환경이 도메인 간 도메인 인 경우 easyXDM도 고려해야합니다. 이것은 RPC 호출로 도메인 경계, 이벤트를 통해 통신 할 수있게 해주는 사용하기 쉬운 라이브러리입니다. 예 : here 중 하나를 시도해보십시오. 도메인 간 XHR을 사용하도록 설정합니다.
예제에 대한 자세한 내용은 http://easyxdm.net/wp/2010/03/17/cross-domain-ajax/

관련 문제