AJAX (XMLHttpRequest) nefunguje na subdoméně

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.

Komentáře 7

  1. #1 Petr Kratina

    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.

  2. #2 Radek Hulán autor webu ▲10 ▼0

    [1] ještě jednodušší je udělat symbolický odkaz na soubor (ln -l from to)...

  3. #3 Ondra Nekola

    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í.

  4. #4 Michal Kubenka ▲1 ▼1

    Čo je zložité na ladení AJAXu? Pre Firefox existuje rozšírenie Firebug, a v IE je možné použiť Fiddler...

  5. #5 Radek Hulán autor webu ▲10 ▼0

    [4] Firebug je dost dobrý, ale použití open() na subdoménu nevygenerovalo žádnou chybu ani warning, takže nebylo jasné, proč to nejede..

  6. #6 Tomas ▲1 ▼0

    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...

  7. #7 Kucharczyk Lukáš

    [6] Díky za odkaz na kvalitní článek.