2011-02-17 17 views
12

Proporciono una descarga de archivos (generalmente CSV o PDF) en mi aplicación web JSF en un host HTTPS (SSL). Trabaja muy bien en la mayoría de los navegadores, sólo el Internet Explorer 7/8 da el siguiente error:IE no puede descargar foo.jsf. IE no pudo abrir este sitio de Internet. El sitio solicitado no está disponible o no se puede encontrar

Internet Explorer cannot download foo.jsf. Internet Explorer was not able to open this internet site. The requested site is either unavailable or cannot be found. Please try again

Creo que el error está relacionado con la etiqueta JSF <h:commandLink> no es compatible con IE.

<h:commandLink value="Download" action="#{bean.download}" /> 

¿Cómo se causa esto y cómo puedo solucionarlo?

Respuesta

14

Este es un mensaje de error típico de MSIE cuando se proporciona una descarga a través de HTTPS (SSL) mientras que los encabezados de respuesta se han configurado para desactivar la memoria caché del navegador a través del no-cache. Este problema no está relacionado con JSF.

Debe relajar los encabezados de respuesta que tienen influencia en la caché del navegador. No debe contener la instrucción no-cache. Puede configurarlo en public, private o no-store.

response.setHeader("Cache-Control", "public"); 
response.setHeader("Pragma", "public"); 

Véase también MS KB Q316431.

Además, si quieres pasar a ejecutar en WebSphere Application Server, a continuación, añadir la cabecera a continuación, así con el fin de evitar que se anule la cabecera Cache-Control después:

response.setHeader("CookiesConfigureNoCache", "false");    

Véase también IE cannot download files over SSL served by WebSphere.

+0

Mi preocupación es que el archivo realmente no es público y, en realidad, nunca debe almacenarse en caché. –

+1

Use cualquiera de 'Cache-Control: no-store' o' Cache-Control: private' y 'Pragma: private' en su lugar, que parece ser lo más parecido que todavía funciona con SSL en Internet Explorer. – bassim

1

El problema no estaría relacionado con jsf, ya que solo está convirtiendo commandbutton en html, que es accesible en todos los navegadores. Supongo que el problema está en abcBean.downloadCSV. ¿Está configurando correctamente el tipo de contenido en el archivo csv?

¿Puede describir lo que ocurre en su método de acción?

+0

El tipo de contenido no puede ser el problema, ya que funciona bien en otros navegadores y MSIE lo ignora de todos modos (en cambio lo determina en función de la URL de la solicitud, sí lo sorprendente ...). – BalusC

Cuestiones relacionadas