untitled.bmp I Internet Explorer
Jeg har døjet med et irriterende problem …
Jeg genererer nogle grafer ved hjælp af PEAR’s Image_Graph. Jeg ville gerne have at brugernes browsere foreslog et filnavn der gav mening når de valgte at gemme graferne. Endvidere ville jeg gerne have at brugerne kunne printe graferne. Første problem løste jeg ved at sætte følgende header:
Content-Disposition: inline; filename="mingraf.png"Som sidebemærkning kan det nævnes at den version jeg brugte af Image_graph sætter den header selv når man kalder $Graph->done(), men den sætter den forkert. Skal man bruge den header, skal man selv sætte den.
Det fungerer også fint i Firefox, men i Internet Explorer* (må den brænde i helvede!) valgte den altid at gemme billedet som untitled.bmp, og IE kunne heller ikke printe grafen. Ved print opførte den sig som den gør hvis billedet ikke findes.
Så opgaven var 1) filnavn og 2) print
Løsningen blev 1) tillad caching 2) undgå cookies
Dog skal man være opmærksom på, at hvis man kun tillader eller opfordre til caching vil IE gemme grafen som untitled.bmp såfrem man har prøvet at printe eller brugt “Vis udskrift”.
Hvordan man implementerer det er op til en selv, men man skal undgå at sende cookies, samt undgå headere der indikerer at siden ikke må caches. Der blev fra PHP’s side sendt en Cache-Control: no-cache. Den overskrev jeg til sidst i mit script til at sende en Cache-Control: cache.
Sendes der andre caching-begrænsende headere skal disse ligeledes overskrives af headere der tillader eller opfordre til caching. Umiddelbart er jeg kun stødt på Cache-Control, Pragma samt Expires.
Min motivation for at grafen oprindeligt skulle sende en cookie bunder i, at man kun skulle have adgang til den hvis man var logget ind. Derfor inkluderede alle mine script noget koder der kontrollerede brugeren, hvorfor den også satte en cookie hvis man havde adgang.
*) Jeg har kun testet det i Internet Explorer 7.0.5730.13

Jeg hedder Morten, og jeg har udviklet webapplikationer siden slutningen af 90'erne.