교차 도메인 iframe의 DOM 콘텐츠 가져오기
교차 도메인 사이트에 대한 iframe을 가지고 있습니다.인스펙터를 사용하면 iframe의 DOM까지 수정할 수 있기 때문에 가능하다고 믿었던 iframe의 DOM을 읽고 싶습니다.하지만 제가 그것을 읽으려고 할 때마다, 저는 같은 출처 정책에 부딪힙니다.제가 원하는 것은 iframe에서 로컬 DOM에 로드된 콘텐츠입니다.나는 그것이 매우 간단할 것이라고 생각했습니다.$(document.body).find('iframe').html()
하지만 그것은 빈 끈을 돌려주는 것입니다.
지난 며칠 동안 제가 해온 일이 이것이 할 수 있는 것을 전제로 했기 때문에 저는 정말로 이것을 할 수 있는 방법이 있기를 바랍니다.
감사해요.
그럴수는 없어요.XSS 보호.사이트 간 내용을 Javascript로 읽을 수 없습니다.어떤 주요 브라우저도 이를 허용하지 않습니다.죄송합니다만, 이것은 디자인상의 결함입니다, 당신은 그 아이디어를 포기해야 합니다.
편집
iframe에 로드된 웹 사이트에 대한 편집 권한이 있는 경우 postMessage를 사용할 수 있습니다(브라우저 호환성도 참조).
간단한 방법이 있습니다.
당신은 "the-site-you-want-to-get.com/unicorn ://http://your-domain.com/index.php?url=http "와 같은 소스를 가진 iframe을 만듭니다.
그런 다음 이 URL을 다음과 같이 가져옵니다.
$_GET
내용을 표시합니다.file_get_contents($_GET['url']);
당신은 당신과 같은 도메인을 가진 iframe을 얻을 것이고, 그러면 당신은 사용할 수 있을 것입니다.$("iframe").contents().find("body")
내용을 조작할 수 있습니다.
iframed 페이지에 액세스할 수 있다면 easyX와 같은 것을 사용할 수 있습니다.iframe에서 함수 호출을 하고 데이터를 반환하는 DM.
iframed 페이지에 액세스할 수 없는 경우 서버 측 솔루션을 사용해야 합니다.PHP를 사용하면 다음과 같은 빠르고 더러운 작업을 수행할 수 있습니다.
<?php echo file_get_contents('http://url_of_the_iframe/content.php'); ?>
로드된 도메인/iframe에 대한 액세스 권한이 있는 경우 window.postMessage를 사용하여 iframe과 기본 창 간에 통신할 수 있습니다.
iframe에서 JavaScript로 DOM을 읽고 postMessage를 통해 상단 창으로 전송합니다.
자세한 내용은 https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage 에서 확인할 수 있습니다.
그것을 달성하기 위한 해결책이 있습니다.
먼저 iframe을 상대 URL로 대상 페이지에 바인딩합니다.브라우저는 웹 사이트와 동일한 도메인의 iframe에 있는 사이트를 처리합니다.
웹 서버에서 다시 쓰기 모듈을 사용하여 상대 URL에서 절대 URL로 요청을 리디렉션합니다.만약 당신이 IIS를 사용한다면, IIRF 모듈을 확인하는 것을 참조하십시오.
언급URL : https://stackoverflow.com/questions/6170925/get-dom-content-of-cross-domain-iframe
'programing' 카테고리의 다른 글
jQuery AJAX 오류를 어떻게 잡을 수 있습니까? (0) | 2023.09.01 |
---|---|
준비된 진술서, 상환청구서 및 성과 고려사항 (0) | 2023.09.01 |
jQuery 자동 완성 및 ASP.NET (0) | 2023.09.01 |
아약스 vs.웹 소켓 대웹 작업자 (0) | 2023.09.01 |
Spring 프로필에서 @PropertySources를 선택할 수 있습니까? (0) | 2023.09.01 |