AJAX (XMLHttpRequest) nefunguje na subdoméně
Webdesign, CMS
07.02.08
Pro mnohé to bude asi samozřejmost, ale XMLHttpRequest
nefunguje, pokud metoda open() volá cokoliv jiného než skript na aktuální doméně. Takže z DOMENA.cz si nezavoláte www.DOMENA.cz ani samozřejmě subdomena.DOMENA.cz.
Je to nemilé, ale v případě subdomén se to dá snadno a rychle obejít přes symbolické odkazy (ln -s from to
).
Dnes jsem hodinu ladil jeden rozsáhlý skript, který po nakopírování na produkční server "přestal fungovat" (AJAX se ladí hodně špatně), a až poté mě napadlo přečíst si znovu dokumentaci pro XMLHttpRequest.open()
. Důvodem nefunkčnosti je bezpečnostní nastavení prohlížečů, nicméně myslel jsem si, že subdomény jsou povoleny. Nejsou.
Pro volání skriptů na subdoméně nebo dokonce jiné doméně by neměl být problém napsat (třeba v PHP) jednoduchou "proxy", která převezme celý dotaz, udělá HTTP request (třeba pomocí Zend_Http_Client) na požadovanou stránku a vrátí výsledek.
[1] ještě jednodušší je udělat symbolický odkaz na soubor (
ln -l from to
)...Symlink je správné řešení, ale já bych nakonec vsadil na proxy a použil ji v nejlepší tradici proxy patternu na logování.
Čo je zložité na ladení AJAXu? Pre Firefox existuje rozšírenie Firebug, a v IE je možné použiť Fiddler...
[4] Firebug je dost dobrý, ale použití open() na subdoménu nevygenerovalo žádnou chybu ani warning, takže nebylo jasné, proč to nejede..
Neviem presne ci to suvisi, ale brat riesil (a vyriesil) nieco podobne, crossdomain AJAX. Blizsie tu: (snad mi hlavu neodtrhne :) )
http://miso.blog.matfyz.sk/p731-cross-domain-ajax...
[6] Díky za odkaz na kvalitní článek.