Веб размена порука или унакрсна размена докумената је АПИ уведен у стандарду WHATWG HTML5, омогућавајући тако документима да комуницирају једни са другима преко различитих порекла или изворних доменаCross-Document Messaging — HTML Draft Standard , када се приказују у веб-прегледачу. Пре HTML5 верзије, веб прегледачи нису дозвољавали тзв. унакрсно-сајт скриптовање ради заштите од безбедносних напада. Добро је познато да ова пракса забране комуникације између не-непријатељских страна отежава било коју интеракцију међу документима.WebKit DOM Programming Topics — Cross Document Messaging Веб размена порука омогућава скриптама да комуницирају преко тих граница, пружајући основни ниво сигурности.
Захтеви и атрибути Користећи метод postmessage овог АПИ-ја, текстуалне поруке могу бити послате са једног домена на други, на пример, из родитељског документа ка iframe прозору.Remy, Sharp, Messages, Workers, and Sockets, Introducing HTML5, New Riders, (2011). стр. 197—199 Захтев за ово је да аутор прво мора да добије Window објекат докумената пријема. Као резултат тога, поруке могу бити постављене на следеће: друге оквире или оквире унутар прозора пошиљалаца документа прозоре које пошиљалац докумената експлицитно отвори кроз JavaScript позиве прозор родитеља пошиљаоца документа прозор који отвара пошиљалац документа Порука event која пристиже, има следеће атрибуте: data — Подаци, или стварни садржај, долазне поруке. origin — Порекло пошиљаоца документа. То обично укључује шему, име хоста и порт. Он не укључује путању или идентификатор фрагмената. source — у WindowProxy, одакле је овај документ дошао (изворни прозор). Метод postmessage не блокира позив; поруке се обрађују асинхроно.HTML5 Web Messaging
Пример Следећи случај ће бити разматран: жели се да документ А који је учитан из example.net комуницира са документом Б који је учитан из example.com у одређени iframe прозор или искачући прозор. У језику JavaScript код за документ А ће имати следећи облик: var o = document.getElementsByTagName('iframe');
o.contentWindow.postMessage('Hello B', 'http://example.com/');
Порекло contentWindow објекта је прослеђено методи postmessage. Он мора да одговара пореклу документа са којим се жели да комуницира (у овом случају, документ Б). У супротном ће бити испаљена безбедносна грешка и код из скрипте ће престати да се извршава. JavaScript код за документ Б ће изгледати овако: function receiver(event) { if (event.origin == 'http://example.net') { if (event.data == 'Hello B') { event.source.postMessage('Hello A, how are you?', event.origin);
else { alert(event.data);
window.addEventListener('message', receiver, false);
Догађај слушаоца је подешен да прима поруке од документа А. Користећи порекло врши се провера да ли је домен пошиљаоца заправо и очекивани домен. Документ Б затим прегледа поруку, или је приказује кориснику, или сам одговара поруком документу А.
Безбедност Слаба провера порекла може представљати ризик за апликације које употребаљавају овакав начин унакрсне размене докумената.HTML5 Security in a Nutshell Да би били заштићени од злонамерног кода од стране других домена, аутори би требало да провере атрибут порекла како би се осигурало да поруке примљене од стране других домена буду проверене одакле долазе. Формат долазних података такође треба бити проверен, да ли се поклапа са форматом очекиваних података.
Подршка Подршка за унакрсну размену докумената постоји у садашњим верзијама Интернет експлорер, Мозила фајерфокс, Сафари, Гугл кроум, Опера, Опера Мини, Опера Мобил и Андроид веб прегледач.When can I use Cross-Document Messaging? Подршка за API постоји у Тридент, Геко, комбиновањем Вебкита и Преста.
Види још -{Cross-site scripting}- Истог порекла политике Размена унакрсно порекла ресурса -{JSONP}-
Референце
Спољашње везе Препоруке HTML5 веб система за размену порука Спецификација HTML5 веб система за размену порука
Категорија:Апликациони програмски интерфејс Категорија:HTML