Inicio / iframe postmessage 예제

iframe postmessage 예제

나는 버튼과 이벤트 리스너와 함께 작동하도록이 있어하지만 메시지페이지 로드에 보낼 수 있도록 고군분투하고 있습니다. 가능합니까? 예제에서 실제로 변경 한 유일한 것은 div가 아닌 iframe의 입력 값으로 메시지를 보내는 것입니다. 그러나 다른 원점에서 iframe.contentWindow.onload에 액세스할 수 없으므로 iframe.onload를 사용하십시오. 다른 사이트에서 메시지를 받을 것으로 예상되는 경우 항상 원본 및 원본 속성을 사용하여 보낸 사람의 ID를 확인합니다. 모든 창(예: http://evil.example.com)은 다른 창으로 메시지를 보낼 수 있으며 알 수 없는 보낸 사람이 악의적인 메시지를 보내지 않을 것이라는 보장은 없습니다. 그러나 ID를 확인하면 항상 수신된 메시지의 구문을 확인해야 합니다. 그렇지 않으면 신뢰할 수 있는 메시지만 보낼 수 있는 신뢰할 수 있는 사이트의 보안 구멍이 사이트의 교차 사이트 스크립팅 구멍을 열 수 있습니다. 이제 postMessage()를 사용하여 서로 다른 도메인의 두 창 간에 메시지를 전달하는 방법을 이해하게 되었으므로 예제를 살펴보겠습니다. 라이브 데모를 로드하면 `메시지 보내기` 버튼을 클릭하면 Hello Treehouse가 발생합니다! 텍스트를 iframe에 표시할 수 있습니다.

성공! 웹 사이트에서: window.addEventListener (함수(이벤트) { if(event.data.sender & event.data.sender == `iframeName`){ {/ 여기 }} 귀하의 작업} ) «샌드박스» 특성의 목적은 더 많은 제한을 추가하는 것입니다. 제거할 수 없습니다. 특히 iframe이 다른 원점에서 오는 경우 동일한 원산지 제한을 완화할 수 없습니다. window.postMessage() 메서드를 사용하면 Window 개체 간의 원본 간 통신이 안전하게 활성화됩니다. 예를 들어, 페이지와 팝업 사이에 생성된 페이지와 페이지 사이에 포함된 페이지와 iframe 사이에 포함됩니다. 생성시 iframe에는 즉시 문서가 있습니다. 그러나 그 문서는 그것에로드 하는 것과 다릅니다! 태그는 별도의 문서 및 창 개체를 가진 별도의 임베디드 창을 호스팅합니다. 안녕하세요 선생님, 이 멋진 기사주셔서 대단히 감사합니다. 그러나 선생님 나는 한 가지 문제에 직면하고있다. 보낸 사람과 수신기 창을 모두 열려있어야 합니까? 나는 그것의 동기 호출을 생각합니다.

실제로 선생님 은 포스트 메시지를 사용하여 단일 사인온 (SSO)을 구현하려고합니다. 도와주실 수 있으세요? 사용자가 단추 보내기 메시지(또는 로그인)를 클릭했을 때 값을 어떻게 저장할 수 있습니까? SSO 목적을 위해 사용자 이름과 암호를 저장하고 싶습니다. 당신의 친절한 응답을 기다리고 있습니다. postMessage()는 보류 중인 모든 실행 컨텍스트가 완료된 후에만 MessageEvent를 전달하도록 예약합니다. 예를 들어, postMessage()가 이벤트 처리기에서 호출되는 경우 해당 이벤트 처리기는 MessageEvent가 전달되기 전에 동일한 이벤트에 대한 나머지 처리기와 마찬가지로 완료될 때까지 실행됩니다. 깨끗하고 잘 구조화되고 교육적인 지침에 감사드립니다. 나는 특정 문제로 어려움을 겪고 있습니다 – 나는 부모와 iframe 페이지에서 iFrameResize를 사용하고 있으며, 다소 통신을 엉망으로 합니다. iFrameResize에서 메시지를 자동으로 삭제하는 방법이 필요합니다.

나는 당신이 코멘트 @strigga 언급 한 선택적 접근 방식을 시도 할 것이다. 이 문제에 대한 추가 아이디어가 있거나 유사하지만 동일하지 않은 이 두 스크립트에 대한 경험이 있다면 힌트는 매우 감사할 것입니다. 하나는 로컬 컴퓨터 (c:asdf.htm)에 있고 다른 하나는 도메인 («http://dfdf.com»)에있는 경우 사람이 2 iframes 사이에 통신하는 방법을 알고 있습니까? 아래 예제에서는 기본 제한 집합이 있는 샌드박스된 iframe을 보여 줍니다.