me estoy volviendo loco con el siguiente problema lo que no ocurre en ningún otro navegador (Chrome, Firefox):IE8 no se visualizan imágenes (rojo x) ... a veces
- caché de Internet Explorer 8 se borra
- El navegador comienza abre la página HTML/Javascript que solicita y crea algunas imágenes dinámicamente. Esta página HTML se sirve desde un servidor local Tomcat: 8084.
- La mayor parte del tiempo de 10 imágenes solicitadas IE muestra RED X.
- El informe de imagen del desarrollador (F12) muestra algunas imágenes "tamaño de archivo" como # bytes correctos, pero la imagen aún no se muestra, o algunas tamaño de archivo de imágenes "bytes desconocidos" y la imagen no funciona.
- A veces aparecen de 2 a 4 de 10 imágenes y el resto falla.
- A veces, en una loca furia de golpear refresca mil millones de veces, aparecen las imágenes.
- El verdadero truco es que cuando pongo un punto de interrupción en mi servidor HTTP, el socket ni siquiera se abre. IE ni siquiera intenta recuperar las imágenes del servidor antes de fallar.
- Y, por último, si ejecuto el mismo código pero solicito una imagen de algún lugar como google maps, funciona en IE sin problemas.
Aquí está mi código javascript:
<script type="text/javascript">
var ctr = 0;
function getImage(url)
{
var img = document.createElement("img");
img.src = url + "&nc=" + ctr;
ctr ++;
img.width = 128;
img.height = 128;
document.body.appendChild(img);
}
for (var i = 0; i < 10; i=i+1)
{
//THIS FAILS MOST OF THE TIME
setTimeout("getImage('http://myHostName:9980/GenerateImageStatic?parameter=1')", 1000);
//THIS WORKS! WHY?
//setTimeout("getImage('http://maps.google.com:80/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=14&size=512x512&maptype=roadmap&markers=color:blue|label:S|40.702147,-74.015794&markers=color:green|label:G|40.711614,-74.&markers=color:red|color:red|label:C|40.718217,-73.998284&sensor=false')", 1000);
}
</script>
Para servidor HTTP que estoy usando ASIO muestra BOOST servidor HTTP Link lo modifico por lo que para cualquier URI de la solicitud, envía un archivo PNG (He intentado varios archivos para asegurarse de que no sea una codificación PNG mala). El encabezado HTTP tiene Content-type: "image/png". Entonces se envía el tipo de mimo correcto.
He estado tratando de encontrar una solución durante mucho tiempo. Lea varias publicaciones:
- Mime type is the problem. El tipo MIME no es el problema en mi caso. Configuro el tipo de contenido. También he usado el complemento Firefox LiveHTTPHeader para ver los encabezados enviados desde el servidor. A excepción de algunos encabezados de control de caché, mis encabezados son los mismos que los que envía google en términos de tipo de contenido:
- Security error. Ok, tal vez las imágenes de dominio cruzado son un riesgo de seguridad. O algo está bloqueando la solicitud. Entonces, ¿por qué no falla el 100% del tiempo? ¿Por qué IE no solicita ninguna imagen de dominio cruzado? Sin embargo, la solicitud de maps.google.com funciona, y la mía solo funciona a veces. Lo mismo se aplica a cualquier firewall o antivirus. También intenté ejecutar el servidor en varios puertos (80, 8080, 9980).
- Javascript error. Creo que el Javascript es correcto De hecho, estaba teniendo el mismo problema con GWT. Entonces pensé que era GWT el problema. Y hubo un error de evento con IE y GWT relacionado con las imágenes. Así que simplifiqué el código solo a Javascript. no GWT.
- Tal vez sea la implementación del servidor HTTP de C++. Es una posibilidad. Sin embargo, Firefox y Chrome funcionan con el mismo código sin problemas.
¿Alguna idea? Gracias.
EDIT He añadido myHostName a sitios de confianza. También bajé la configuración de seguridad a bajo para sitios internos y de Internet. Voy a intentar desactivar keepalive en el servidor si está habilitado.Sin embargo, como mencioné, no veo IE haciendo un intento de recuperar la imagen. El socket no recibe ninguna solicitud de IE, por lo que quitar keep-alive de los encabezados puede no ser de ayuda.
Tengo que amar al IE. "Hacer que el mundo sea un lugar más enojoso">: - O – Bojangles
¿Intentó agregar 'http: // myHostName: 9980 /' a la lista de sitios de confianza de IE? Además, si su servidor HTTP admite keep-alives, ¿intentó deshabilitarlos? –