웹 메시징
Web MessagingHTML |
---|
비교 |
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, WebKit 및 Presto 레이아웃 [7]엔진에서 지원됩니다.
「 」를 참조해 주세요.
레퍼런스
- ^ a b c d e f 크로스 문서 메시징– HTML 초안 표준
- ^ a b WebKit DOM 프로그래밍 항목 - 교차 문서 메시징[데드링크]
- ^ a b Remy, Sharp, Messages, Workers, Sockets, 소개HTML5, New Riders, 2011, 페이지 197-199
- ^ "HTML5 Web Messaging".
- ^ HTML5 보안에 관한 간단한 설명
- ^ 크로스 문서 메시징은 언제 사용할 수 있습니까?
- ^ HTML5에서 지원되는 기능 선택[데드링크]
외부 링크
- HTML5 Web Messaging
- HTML5 웹 메시지 사양
- Cross-Document Messaging – HTML Draft Standard, WHATWG
- WebKit DOM Programming Topics - Cross Document Messaging, Apple Developer Library, archived from the original on 2012-06-09, retrieved 2013-12-29
- Eng, Chris (2010-05-17), HTML5 Security in a Nutshell, Veracode
- When can I use Cross-Document Messaging?, CanIUse
- A Selection of Supported Features in HTML5