Chcel som vytvoriť komunitnú wiki týkajúcu sa zásad rovnakého pôvodu v HTML/JS, aby som snáď pomohol všetkým, ktorí túto tému hľadajú. Je to jedna z najvyhľadávanejších tém na SO a neexistuje pre ňu žiadna konsolidovaná wiki, takže som tu :)
Politika rovnakého pôvodu zabraňuje dokumentu alebo skriptu načítanému z jedného pôvodu získať alebo nastaviť vlastnosti dokumentu z iného origin. Táto politika sa datuje až do späť do Netscape Navigator 2.0.
Prosím, uvádzajte slovné príklady a najlepšie aj odkazy na vaše zdroje.
Nastavenie jednoduchého reverzného proxy servera umožní prehliadaču používať relatívne cesty pre požiadavky Ajax, zatiaľ čo server bude fungovať ako proxy server pre akékoľvek vzdialené miesto.
Ak používate mod_proxy v Apache, základnou konfiguračnou smernicou na nastavenie reverzného proxy je ProxyPass
. Zvyčajne sa používa takto:
ProxyPass /ajax/ http://other-domain.com/ajax/
V tomto prípade by prehliadač mohol požadovať /ajax/web_service.xml
ako relatívnu adresu URL, ale server by ju obslúžil tak, že by sa správal ako proxy na http://other-domain.com/ajax/web_service.xml
.
Jednou zo zaujímavých vlastností tejto metódy je, že reverzný proxy server môže ľahko rozdeliť požiadavky smerom k viacerým back-endom, čím funguje ako load balancer.
Osobne som pre moderné prehliadače našiel najspoľahlivejší spôsob window.postMessage
. Musíte síce vynaložiť trochu viac práce, aby ste sa uistili, že sa nenechávate otvorení útokom XSS, ale je to rozumný kompromis.
Existuje aj niekoľko zásuvných modulov pre populárne Javascriptové toolkity, ktoré obaľujú window.postMessage
a poskytujú podobnú funkčnosť pre staršie prehliadače pomocou iných vyššie uvedených metód.