다른 도메인 URL이 포함 된 iframe에서 상위 URL에 해시 값을 설정하려고하면 아래 오류가 발생합니다.
안전하지 않은 JavaScript가 URL이 "URL2"인 프레임에서 URL이 "URL1"인 프레임에 액세스하려고합니다. 도메인, 프로토콜 및 포트가 일치해야합니다.
이 문제를 어떻게 해결할 수 있습니까?
다른 도메인 URL이 포함 된 iframe에서 상위 URL에 해시 값을 설정하려고하면 아래 오류가 발생합니다.
안전하지 않은 JavaScript가 URL이 "URL2"인 프레임에서 URL이 "URL1"인 프레임에 액세스하려고합니다. 도메인, 프로토콜 및 포트가 일치해야합니다.
이 문제를 어떻게 해결할 수 있습니까?
답변:
출처가 다른 하위 문서에서 상단 창의 location.hash
속성에 액세스 할 수 없지만 location
속성 자체 를 설정할 수 있습니다.
상단 창 위치가 주어진 것을이 방법 http://example.com/page/
대신에 일을,
parent.location.hash = "#foobar";
부모님의 위치를 알아야하고
parent.location = "http://example.com/page/#foobar";
리소스가 탐색되지 않기 때문에 예상대로 작동하며 URL의 해시 부분 만 변경합니다.
두 프레임의 도메인-> 보안이 다른 경우 크로스 프레임 스크립팅이 불가능합니다.
참조 : http://javascript.about.com/od/reference/a/frame3.htm
이제 귀하의 질문에 답하십시오. 해결책이나 해결 방법이 없습니다. 다른 도메인의 두 프레임이 다른 도메인의 URL을 변경해야하는 이유를 웹 사이트 디자인을 확인해야합니다.
iframe.src의 도메인을 챔지하려고 할 때 동일한 오류 메시지가 표시되었습니다.
저에게 대답은 iframe.src를 동일한 도메인의 URL로 변경하는 것이었지만 실제로는 원하는 도메인에 대한 html 리디렉션 페이지였습니다. 다른 도메인은 오류없이 내 iframe에 표시되었습니다.
매력처럼 작동했습니다. :)
해결책은 원격 콘텐츠를 검색하는 로컬 파일을 사용하는 것입니다.
remoteInclude.php
<?php
$url = $_GET['url'];
$contents = file_get_contents($url);
echo $contents;
HTML
<iframe frameborder="1" id="frametest" src="/remoteInclude.php?url=REMOTE_URL_HERE"></iframe>
<script>
$("#frametest").load(function (){
var contents =$("#frametest").contents();
});
HTML5 버전 대신 XFBML 버전의 Facebook 좋아요 버튼을 사용하면이 문제가 해결된다는 것을 알았습니다. 버튼을 표시하려는 위치에 아래 코드를 추가하십시오.
<div id="fb-root"></div>
<script>(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<fb:like send="true" layout="button_count" width="50" show_faces="false" font="arial"></fb:like>
그런 다음 HTML 태그에 다음을 추가하십시오.
xmlns:fb="http://ogp.me/ns/fb#"
문제는 프록시를 만들거나 콘텐츠를로드하고 로컬 인 것처럼 삽입하더라도 콘텐츠가 정의하는 모든 스크립트가 다른 도메인에서로드되어 도메인 간 문제를 유발한다는 것입니다.