Menu

Developers

Internet explorer 9 en Accept-header

23 maart 2011

Op 14 maart kwam Internet Explorer 9 uit. Voor ontwikkelaars een fijne boodschap, want deze versie was weer een stuk beter dan de versie daarvoor. De belangrijkste verbeteringen zijn:

  • Snellere javascript-engine
  • Diverse CSS3-features
  • HTML5-features als inline SVG, Canvas2D

Reken maar dat we hiermee leuke dingen kunnen gaan bouwen!

Wel liepen we tegen een vreemd probleem op met onze bestaande websites, namelijk dat in IE9 helemaal geen CSS meer werd getoond. Dit bleek te komen doordat er een accept-header wordt gestuurd bij het ophalen van CSS-bestanden. IE9 wil namelijk alleen bestanden van het type 'text/css' (logisch) en stuurt daarom 'Accept: text/css' mee in de requests naar CSS.

Bij ons leverde dit een probleem op omdat onze CSS-bestanden in veel gevallen worden geserveerd door een PHP-scriptje. Met behulp van multiviews kunnen we Apache alle requests op dit soort bestanden (met mooie urls) laten serveren:
/assets/stylenaam/css/default.css

Op de server staan deze bestanden niet echt, maar worden geserveerd door het scriptje assets.php in de document root.

Apache raakte echter in de war doordat het bij requests vanuit IE9 geen geschikt bestand kon vinden voor het type 'text/css'. Er staat in dat pad namelijk alleen een bestand van type 'application/x-httpd-php' en dus werd een 'not acceptable' respons gegeven.

We hebben dit opgelost door gebruik te maken van een feature in Apache 2.2, namelijk het toevoegen van een (early) request header:

RequestHeader merge Accept */* early

Hierdoor werkte alles weer normaal, ook in IE9.

blog comments powered by Disqus

Nieuwsbrief ontvangen?

Velden met een * zijn verplicht

Like ons op Facebook

Klik hieronder om ons te liken op Facebook.