Trable s MIME typem XHTML

Pachollini, 31. května 2005, 00:11

Že se podle normy XHTML 1.0 posílat s MIME typem application/xhtml+xml je notoricky známé. Že se XHTML 1.1 s tímto typem posílat musí je rozšířené mínění, pro které jsem však nenašel jednoznačnou oporu. Že se Internet Explorer s tímto typem dokumentu neumí vypořádat a místo zobrazení nabídne jeho stažení nebo spuštění, se také dávno ví. Že si prohlížeče, které application/xhtml+xml umí zobrazit, o něj říkají pomocí HTTP hlavičky Accept a že MSIE tento typ v hlavičce Accept kupodivu správně neuvádí a že tudíž lze pomocí jednoduchého skriptíku posílat stránku každému browseru podle jeho možností, se rozebíralo mnohokrát.

Že tu přesto může vznikat nějaký problém jsem začal tušit poměrně nedávno, kdy si nějaký uživatel s MSIE stěžoval, že se mu stránka, kterou hyperkorektně (leč nejspíš celkem zbytečně) servíruji všem slušným prohlížečům jako application/xhtml+xml, nezobrazí, nýbrž nabízí se ke stažení. V ten momenet mi naskákaly mi pupínky a zatrnul jsem, co pro nás velký Bill zase přichystal za překvapení, jestli k nějaké nové várce záplat starého vraku Internet Exploreru přibalil úžasnou bugofíčuru, která způsobuje, že si dotyčný browser říká o dokumenty, které neumí zpracovat, nebo co se sakra děje. Vzhledem k tomu, že jsem s dotyčným uživatelem neměl žádný přímý kontakt a více se jich neozvalo, zařadil jsem problém do škatulky „nevysvětlené podivnosti“, pečlivě zašpuntoval a odložil k ledu.

Naštěstí tam nezůstal dlouho. Chlubil jsem se dneska Frodovi s webem Ave Bicycle Tours, který jede na mém enginu (ne, nechvalte mě, design dělala má kámoška Tereza Mikušová) s tím, že grafika je v pořádku jenom v rozumných browserech, an MSIE neumí poloprůhledné PNG. Frodo tedy spustil Explorer, by se podíval, jak mu ten skvostný výtvor zprzní a hle, stránka se mu nabídla ke stažení. Po chvíli laborování jsme zjistili, že v browseru chyba není, hlavičky posílá správné, přesto se mu však stránky servírují se špatným typem. Zrada. Co je špatně?

Modří už jistě vědí, mně to však chvíli trvalo. Ano, na vině byla jako obvykle proxy keš. Stránky Ave Bicycle Tours se jako každý správný web kešují, jenomže při prvním požadavku z Mozilly se v proxy uložily s MIME typem application/xhtml+xml a když si o ně potom řekl Internet Explorer, proxy mu je samozřejmě podstrčila ve stejném balení, v jakém je poprvé dostala.

Oč obtížnění bylo nalezení problému, o to snazší je řešení: stačí posílat dokument s HTTP hlavičkou Vary: Accept, která způsobí, že proxy předá každému co jeho jest, a je po problému. Pro péhápéčkáře:

<? header ("Vary: Accept"); ?>

Jak prosté, milý Watsone.

Chamurappi se teď nám, vyznavačům boha jediného, jistě směje pod fousy, máte co jste chtěli, kdybyste se starali o to, co funguje a ne jaká je jedině správná hlavička, mohli jste místo řešení uměle vyrobených problémů radši udělat nějaký pěkný webík. Na druhou stranu jsem alespoň zjistil, že existuje Vary: a ještě několik dalších užitečných HTTP hlaviček, které jsem sice nikdy nepotřeboval, ale možná jednou budu.

Co vy na to?

zobrazit všechny komentáře

Aktuální Seky

.