window.postMessage 의 요점은 다른 도메인에서 호스팅되는 창 / 프레임 간의 안전한 통신을 허용 하는 것 같지만 실제로 Chrome 에서는 허용 하지 않는 것 같습니다 .
시나리오는 다음과 같습니다.
- 도메인 A의 페이지에 <iframe> (
src
도메인 B * 사용 ) 삽입 - <iframe>은 대부분 <script> 태그로 끝나며 실행이 끝날 때 ...
- window.postMessage ( some_data , page_on_A )를 호출합니다.
<iframe>은 가장 확실하게 도메인 B의 컨텍스트에 있으며 해당 <iframe>에 포함 된 자바 스크립트가 제대로 실행되고 postMessage
올바른 값으로 호출되는지 확인했습니다 .
Chrome에서이 오류 메시지가 나타납니다.
A 에게 메시지를 게시 할 수 없습니다 . 수신자는 출처 B가 있습니다.
다음은 A 페이지에 메시지 이벤트 리스너를 등록하는 코드입니다.
window.addEventListener(
"message",
function (event) {
// Do something
},
false);
나는 또한 호출을 시도했지만 window.postMessage(some_data, '*')
오류를 억제하는 것뿐입니다.
여기서 요점을 놓치고 있습니까? window.postMessage (...)가 이것을 의미하지 않습니까? 아니면 내가 끔찍하게 잘못하고 있습니까?
* Mime 형식의 텍스트 / html, 그대로 유지해야합니다.