웹 메시징

Web Messaging

Web Messaging 또는 크로스 문서 메시징WHATWG HTML5 초안 사양에 도입된 API로 웹 브라우저에 렌더링되어 있는 동안 문서가 서로 다른 원본 또는 원본[1] 도메인을 통해 통신할 수 있도록 합니다.HTML5 이전의 웹 브라우저에서는 보안 공격으로부터 보호하기 위해 사이트 간 스크립팅이 허용되지 않았습니다.이러한 관행은 또한 적대적이지 않은 페이지 간의 통신을 금지하여 어떠한 종류의 문서 [1][2]상호 작용도 어렵게 만들었습니다.문서 간 메시징을 통해 스크립트는 이러한 경계를 넘어 상호 작용하면서 기본적인 수준의 보안을 제공할 수 있습니다.

요건 및 속성

Messaging API 사용postMessage방법, 예를 들어 부모 문서에서 [3]IFRAME으로 플레인 텍스트 메시지를 한 도메인에서 다른 도메인으로 보낼 수 있습니다. 이것은 작성자가 먼저 다음을 얻어야 합니다.Window수신 문서의 오브젝트.그 결과,[2] 메시지는 다음에 투고할 수 있습니다.

  • 발신인 문서의 창에 있는 다른 프레임 또는 iframe
  • 창 JavaScript 호출을 통해 발신인 문서를 명시적으로 엽니다.
  • 보낸 사람 문서의 상위 창
  • 보낸 사람 문서를 연 창

메시지event수신되는 에는, 다음의 어트리뷰트가 있습니다.

  • data- 수신 메시지의 데이터 또는 실제 내용.
  • origin- 보낸 사람 문서의 원본입니다.여기에는 보통 스킴, 호스트명 및 포트가 포함됩니다.패스 ID 또는 프래그먼트 [1]ID는 포함되지 않습니다.
  • source- 그WindowProxy(소스 창)의 출처를 지정합니다.

postMessage는 블로킹콜이 아닙니다.메시지는 [4]비동기적으로 처리됩니다.

문서 A를 로딩하는 것을 고려하십시오.example.net로딩된 B 문서와 통신하다example.com으로iframe또는 [1]팝업창이 나타납니다.문서 A의 JavaScript는 다음과 같습니다.

변화하다 o = 문서.getElementsByTagName('iframe')[0]; o.콘텐츠 윈도.포스트 메시지('안녕 B', http://example.com/'); 

델의 기원contentWindow오브젝트가 전달되다postMessage에 일치해야 합니다.origin(이 경우는 문서 B)와 교환할 수 있습니다.그렇지 않으면 보안 오류가 발생하고 스크립트가 [3]중지됩니다.문서 B의 JavaScript는 다음과 같습니다.

기능. 리시버(이벤트) {     한다면 (이벤트.기원. == 'http://example.net') {         한다면 (이벤트.데이터. == '안녕 B') {             이벤트.원천.포스트 메시지('안녕 A, 잘 지냈어?', 이벤트.기원.);         }         또 다른 {             경계.(이벤트.데이터.);         }     } } 윈도.addEventListener('메시지, 리시버, 거짓의); 

이벤트 리스너는 문서 A로부터의 메시지를 수신하도록 설정되어 있다.사용방법origin그런 다음 송신자의 도메인이 예상 도메인인지 확인합니다.그런 다음 문서 B는 메시지를 보고 사용자에게 표시하거나 문서 [1]A에 대한 자체 메시지로 차례로 응답합니다.

보안.

발신기지 확인이 불충분하면 문서 간 [5]메시징을 사용하는 응용 프로그램에 위험이 발생할 수 있습니다.외부 도메인으로부터의 악성 코드로부터 보호하기 위해서, 작성자는 다음의 정보를 체크할 필요가 있습니다.origin메시지를 수신할 것으로 예상되는 도메인에서 메시지가 받아들여지는 것을 확인합니다.착신 데이터의 형식도 예상 형식과 [1]일치하는지 확인해야 합니다.

지지하다

문서 간 메시징은 Internet Explorer, Mozilla Firefox, Safari, Google Chrome, Opera, Opera Mini, Opera Mobile 및 Android 웹 [6]브라우저의 현재 버전에서 지원됩니다.API는 Trident, Gecko, WebKitPresto 레이아웃 [7]엔진에서 지원됩니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b c d e f 크로스 문서 메시징– HTML 초안 표준
  2. ^ a b WebKit DOM 프로그래밍 항목 - 교차 문서 메시징[데드링크]
  3. ^ a b Remy, Sharp, Messages, Workers, Sockets, 소개HTML5, New Riders, 2011, 페이지 197-199
  4. ^ "HTML5 Web Messaging".
  5. ^ HTML5 보안에 관한 간단한 설명
  6. ^ 크로스 문서 메시징은 언제 사용할 수 있습니까?
  7. ^ HTML5에서 지원되는 기능 선택[데드링크]

외부 링크