internet explorer - IE no puede descargar archivos a través de SSL servido por WebSphere
internet-explorer jsf (6)
Tuve el mismo problema con IE8. Hice pequeños cambios a mi código.
Response.ClearHeaders (); // necesario, de lo contrario "no-cache: set-cookie" estaba allí, tenía que deshacerse de él
Response.addHeader ("Cache-Control", "privado");
IE 7 y 8 arrojan un error cuando los usuarios intentan descargar un archivo csv sobre https.
Internet Explorer no puede descargar downloadPage.jsf. Internet Explorer no pudo abrir este sitio de Internet. El sitio solicitado no está disponible o no se puede encontrar. Inténtalo de nuevo
Leí sobre los problemas que IE tiene en relación con el almacenamiento en caché, así que cambié la respuesta para permitir el almacenamiento en caché público. Vea este problema: 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
response.setHeader("Pragma", "public");
response.setHeader("Cache-Control", "public");
Pero sigo recibiendo este error.
¿Alguna idea de qué más podría estar causando el problema? Aquí está el fragmento completo:
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
response.setContentType("text/plain");
response.setHeader("Content-Disposition", "attachment; filename=/"" + browserFilename + "/"");
response.setHeader("Pragma", "public");
response.setHeader("Cache-Control", "public");
response.getOutputStream().write(contentBytes);
context.responseComplete();
Tenía exactamente el mismo problema cuando el servidor de aplicaciones estaba configurado para usar SSL. El truco para que lo haga funcionar después de que se activó https:
string attachment = "attachment; filename=" + rptName + ".xls" + "";
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ClearHeaders();
HttpContext.Current.Response.AddHeader("content-disposition", attachment);
HttpContext.Current.Response.AddHeader("Cache-Control", "private, max-age=1");
HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
HttpContext.Current.Response.Charset = "";
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.Cache.SetExpires(DateTime.Now.AddMinutes(1));
Esto es lo que hice en mi código PHP:
header( "HTTP/1.0 200 OK" );
header( "Content-Disposition: inline; filename=$path" );
header( "Content-Type: attachment; application/pdf" );
header( "Content-Length: $info[7]" );
header( "Cache-Control: no-store, no-cache" ); // IE 8 requires these two lines, exactly like this
header( "Pragma: private" ); // IE 8 requires these two lines, exactly like this
readfile( $tmpfile );
Parece que WebSphere agrega automáticamente Cache-Control:no-cache=set-cookie
header de respuesta cuando se incluyen cookies en la respuesta. A IE8 y anteriores no les gusta esto al descargar a través de SSL.
Hay dos soluciones posibles según este hilo del foro IBM Developerworks :
Agregue el encabezado de respuesta personalizada
CookiesConfigureNoCache:false
para el canal de transporte HTTP en WebSphere (es cierto de manera predeterminada).response.setHeader("CookiesConfigureNoCache", "false");
Establezca explícitamente el encabezado de
Cache-Control
después de que se agreguen las cookies, esto anulará el conjunto de WebSphere.response.addCookie(...); response.addCookie(...); ... response.setHeader("Cache-Control", ...);
Tuve el mismo problema. Después de configurar "Content-Disposition" y "Content-Type", agregue este código.
Código Java
// IE requires these three lines, exactly like this
response.setHeader("CookiesConfigureNoCache", "false");
response.setHeader("Pragma","private,no-cache");
response.setHeader("Cache-control","private,no-store,no-cache,max-age=0,must-revalidate");
Código PHP
// IE requires these three lines, exactly like this
header("CookiesConfigureNoCache: false");
header("Pragma: private,no-cache");
header("Cache-control: private,no-store,no-cache,max-age=0,must-revalidate");
Creo que estás en el camino correcto con el almacenamiento en caché:
Este artículo de la base de conocimientos puede ayudarlo, Internet Explorer no puede abrir documentos de Office desde un sitio web SSL
Mencionado en esta pregunta sobre desbordamiento de pila: no se puede abrir el archivo xls en IE