Исках да направя уики за общността по отношение на политиките за същия произход на HTML/JS, за да помогна на всички, които търсят тази тема. Това е една от най-търсените теми в SO, а няма консолидирано уики за нея, така че ето ме тук :)
Политиката за същия произход предотвратява документ или скрипт, зареден от един произход да получава или настройва свойствата на документ от друг произход. Тази политика датира от целия път още от Netscape Navigator 2.0.
Моля, давайте многословни примери и за предпочитане да посочвате източниците си.
Създаването на обикновен обратен прокси на сървъра ще позволи на браузъра да използва относителни пътища за Ajax заявките, докато сървърът ще действа като прокси към всяко отдалечено място.
Ако използвате mod_proxy в Apache, основната конфигурационна директива за настройване на обратен прокси сървър е ProxyPass
. Обикновено тя се използва по следния начин:
ProxyPass /ajax/ http://other-domain.com/ajax/
В този случай браузърът ще може да поиска /ajax/web_service.xml
като относителен URL адрес, но сървърът ще го обслужва, като действа като прокси към http://other-domain.com/ajax/web_service.xml
.
Една от интересните характеристики на този метод е, че обратното прокси може лесно да разпределя заявките към множество бек-ендове, като по този начин действа като load balancer.
Използвам JSONP.
По принцип добавяте
<script src="http://..../someData.js?callback=some_func"/>
на страницата си.
Трябва да се извика some_func(), за да бъдете уведомени, че данните са въведени.
Лично за мен window.postMessage
е най-надеждният начин, който съм открил за съвременните браузъри. Наистина трябва да свършите малко повече работа, за да сте сигурни, че не се оставяте отворени за XSS атаки, но това е разумен компромис.
Съществуват и няколко плъгина за популярните Javascript инструментариуми, които обвиват window.postMessage
и осигуряват подобна функционалност за по-старите браузъри, използвайки другите методи, разгледани по-горе.