Problém

Pokud píšete webové stránky v XHTML, správně byste je neměli posílat s Content-Type: text/html, ale s Content-Type: application/xhtml+xml.

Problém je ovšem v tom, že Internet Explorer, jakožto nejpoužívanější webový prohlížeč, tento Content-Type nedokáže zpracovat a místo toho, aby stránku zobrazil, nabídne ji ke stažení.

Prohlížeče, které s application/xhtml+xml pracovat umějí, toto dávají světu najevo v HTTP hlavičce Accept.

Řešení

Řešením je prohlížečům, které umějí s application/xhtml+xml pracovat tento Content-Type pro XHTML dokumenty posílat a všem ostatním prohlížečům posílat i nadále text/html.

ASP

dim strContentType
If InStr(Request.ServerVariables("HTTP_ACCEPT"), "application/xhtml+xml") > 0 Then
strContentType = "application/xhtml+xml"
Else
strContentType = "text/html"
End If
Response.AddHeader "Vary", "Accept"
Response.ContentType = strContentType

Poznámky na okraj

Zpracovávání XHTML v prohlížečích je daleko striktnější a v případě nalezení chyby parsování stránky skončí chybou. V HTML prohlížeč odhadne, co měl asi tak autor na mysli a podle toho se zachová.

Ukázka chyby parsování XML dokumentu v Opeře
Chyba parsování XML dokumentu v Opeře

Ukázka chyby parsování XML dokumentu ve Firefoxu
Chyba parsování XML dokumentu ve Firefoxu

Další čtení