AJAX (XMLHttpRequest) nefunguje na subdoméně

MyEgo.cz

home foto blogy mywindows.cz kontakt

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

  1. 1 Petr Kratina 07.02.08, 04:02:41
    FB

    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 07.02.08, 04:02:57
    FB

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

  3. 3 Ondra Nekola 07.02.08, 05:02:13
    FB

    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 07.02.08, 05:02:43
    FB

    Č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 07.02.08, 06:02:07
    FB

    [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 08.02.08, 08:02:47
    FB

    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áš 19.02.08, 02:02:27
    FB

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