Webové zprávy - Web Messaging - Wikipedia
HTML |
---|
Srovnání |
Webové zprávy nebo zasílání zpráv mezi dokumenty, je API představen v WHATWG HTML5 návrh specifikace, která umožňuje dokumentům vzájemně komunikovat napříč různými původy nebo zdrojovými doménami[1] při vykreslení v webový prohlížeč. Před HTML5 byly webové prohlížeče zakázány skriptování mezi weby, k ochraně před bezpečnostními útoky. Tato praxe také zamezila komunikaci mezi nepřátelskými stránkami, což ztěžovalo interakci dokumentů jakéhokoli druhu.[1][2] Zprávy mezi dokumenty umožňují interakci skriptů přes tyto hranice a zároveň poskytují základní úroveň zabezpečení.
Požadavky a atributy
Pomocí API pro zasílání zpráv postMessage
metoda, mohou být prosté textové zprávy odesílány z jedné domény do druhé, např. z nadřazeného dokumentu do IFRAME.[3] To vyžaduje, aby autor nejprve získal Okno
předmět přijímajícího dokumentu. V důsledku toho lze zprávy odesílat na následující:[2]
- další rámce nebo iframe v okně dokumentu odesílatele
- okna se dokument odesílatele výslovně otevírá prostřednictvím volání JavaScriptu
- nadřazené okno dokumentu odesílatele
- okno, které otevřelo dokument odesílatele
Zpráva událost
přijímaný má následující atributy:
data
- Data nebo skutečný obsah příchozí zprávy.původ
- Původ dokumentu odesílatele. To obvykle zahrnuje schéma, název hostitele a port. Nezahrnuje identifikátor cesty ani fragmentu.[1]zdroj
-WindowProxy
odkud dokument pochází (zdrojové okno).
postMessage
není blokovací hovor; zprávy jsou zpracovávány asynchronně.[4]
Příklad
Zvažte, že chceme, aby byl dokument A načten z example.net
komunikovat s dokumentem B načteným z example.com
do iframe
nebo vyskakovací okno.[1] The JavaScript pro dokument A bude vypadat takto:
var Ó = dokument.getElementsByTagName('iframe')[0];Ó.contentWindow.postMessage('Ahoj B', „http://example.com/“);
Původ našeho contentWindow
objekt je předán postMessage
. Musí odpovídat původ
dokumentu, se kterým chceme komunikovat (v tomto případě dokument B). V opačném případě bude vyvolána chyba zabezpečení a skript se zastaví.[3] JavaScript pro dokument B bude vypadat takto:
funkce přijímač(událost) { -li (událost.původ == „http://example.net“) { -li (událost.data == 'Ahoj B') { událost.zdroj.postMessage("Ahoj, jak se máš?", událost.původ); } jiný { výstraha(událost.data); } }}okno.addEventListener('zpráva', přijímač, Nepravdivé);
Pro příjem zpráv z dokumentu A je nastaven posluchač událostí původ
vlastnost, pak zkontroluje, že doména odesílatele je očekávaná doména. Dokument B se poté podívá na zprávu, buď ji zobrazí uživateli, nebo odpoví postupně vlastní zprávou pro dokument A.[1]
Bezpečnostní
Špatná kontrola původu může představovat riziko pro aplikace, které využívají zasílání zpráv napříč dokumenty.[5] V zájmu ochrany před škodlivým kódem z cizích domén by autoři měli zkontrolovat původ
atribut zajišťující přijímání zpráv z domén, od kterých očekávají příjem zpráv. Je také třeba zkontrolovat formát příchozích dat, zda odpovídá očekávanému formátu.[1]
Podpěra, podpora
Podpora pro zasílání zpráv mezi dokumenty existuje v aktuálních verzích internet Explorer, Mozilla Firefox, Safari, Google Chrome, Opera, Opera Mini, Opera Mobile, a Webový prohlížeč Android.[6] Podpora API existuje v Trojzubec, Gekon, WebKit a rychle rozložení motory.[7]
Viz také
- Cross-site skriptování
- Padělání žádosti napříč weby
- Stejná politika původu
- Sdílení zdrojů mezi zdroji
- JSONP
Reference
- ^ A b C d E F Zprávy mezi dokumenty - standardní koncept HTML
- ^ A b Témata programování WebKit DOM - zasílání zpráv mezi dokumenty[mrtvý odkaz ]
- ^ A b Remy, Sharp, Zprávy, pracovníci a zásuvky, Představujeme HTML5, New Riders, 2011, s. 197-199
- ^ http://www.w3.org/TR/2010/WD-webmessaging-20101118/#web-messaging
- ^ Zabezpečení HTML5 v kostce
- ^ Kdy mohu použít zasílání zpráv mezi dokumenty?
- ^ Výběr podporovaných funkcí v HTML5[mrtvý odkaz ]
externí odkazy
- Doporučení pro webové zprávy HTML5
- Specifikace webových zpráv HTML5
- Zprávy mezi dokumenty - standardní koncept HTML, WHATWG
- Témata programování WebKit DOM - zasílání zpráv mezi dokumenty, Knihovna vývojářů Apple[mrtvý odkaz ]
- Eng, Chris (2010-05-17), Zabezpečení HTML5 v kostce, Veracode
- Kdy mohu použít zasílání zpráv mezi dokumenty?, Mohu použít
- Výběr podporovaných funkcí v HTML5