문제

JavaScript가 포함 된 페이지가있는 iframe이 포함 된 .jsp가 있습니다. 이 JavaScript는 상위 페이지 (iframe을 포함하는 것)의 일부 DOM 요소에 액세스합니다.

임베디드 페이지는 부모 페이지에서 별도의 하위 도메인에있을 것이며 보안에 영향을 미친다는 것을 알고 있습니다. 내 인상은 iframes에 내장 된 모든 페이지의 문서가 문서와 일치해야한다는 것입니다. 임베디드 페이지에는 현재 보안 범위를 '확장'하는 다음 코드가 포함되어 있습니다.

document.domain = 'domain.com'; // 여기서 domain.com은 내 도메인입니다

그런 다음 상위 문서에서 DOM 요소에 액세스 할 수 있습니다.

현재이 테스트 중이며 다음 항목으로 부모 페이지를 제공하는 Windows 시스템의 호스트 파일을 수정했습니다.

127.0.0.1 Domain.com

목표는 부모 페이지의 JavaScript를 속이는 것이 포함 된 페이지의 문서가 동일한 도메인에서 제공되고 있다고 믿는 것입니다.

그런 다음 같은 컴퓨터의 페이지로 찾아보십시오. FireBug를 통해 관찰 된 부모와 임베디드 페이지 모두에 'Domain.com'으로 표시되는 문서에도 불구하고 임베디드 페이지에서 실행되는 JavaScript에서 DOM 속성을 얻거나 설정하려고 할 때 '허가가 거부 된'오류가 발생합니다.

내가 뭔가를 놓치고 있습니까? 제안이나 의견에 미리 감사드립니다!

도움이 되었습니까?

해결책

"document.domain"속성이 동일하게 보이지만 MSDN 문서 당신이 여전히 설명 해야하는 것처럼 들리는 소리는 다음과 같습니다.

다른 호스트의 모든 페이지에는 도메인 속성이 서로 성공적으로 통신하기 위해 동일한 값으로 명시 적으로 설정해야합니다. 예를 들어, 호스트 Microsoft.com의 페이지의 도메인 속성 값은 기본적으로 "microsoft.com"입니다. MSDN.microsoft.com이라는 다른 호스트에서 페이지의 도메인 속성을 "microsoft.com"으로 설정하면 두 페이지가 서로 통신 할 수 있다는 것이 논리적으로 보일 수 있습니다. 그러나 이것은 그렇지 않습니다. Microsoft.com의 페이지의 도메인 속성을 "microsoft.com"으로 명시 적으로 설정하지 않는 한.

다른 팁

요청을 리디렉션하기 위해 프록시를 넣을 수 있습니다 <iframe src="http://domain.com/fake/"> 올바른 장소로.

그것은 단지 아이디어 일뿐입니다 ...

문안 인사.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top