Negli ultimi giorni al lavoro mi sono scontrato con uno strano problema: una applicazione web, in esecuzione all’interno di Tomcat, genera dinamicamente dei files PDF.
Una volta attivata la connessione con protocollo sicuro (HTTPS), tali PDF non erano più visibili da Internet Explorer 8: Adobe Reader era correttamente eseguito ma la finestra del browser rimaneva bianca.
Il problema non si presentava con Internet Explorer 9 o con altri browsers (Firefox, Chrome…).
Dopo vari tentativi, abbiamo scoperto che il problema risiedeva in due headers del protocollo HTTP che forzavano il browser a non memorizzare la pagina nella cache:
Per prima cosa, essendo l’applicazione bilanciata tramite un appliance F5 LTM, ho preparato una iRule per rimuovere tali headers:
when HTTP_RESPONSE { if { [HTTP::header Content-Type] equals "application/pdf" } { HTTP::header remove "Cache-Control" HTTP::header remove "Pragma" } } |
Infine è stato sviluppato un Filter per Tomcat che – se identifica tramite user-agent il browser Internet Explorer 8 – rimuove tali headers grazie ad una ServletResponse custom.