che sto impazzendo con il seguente problema che non accade in qualsiasi altro browser (Chrome, Firefox):IE8 non la visualizzazione delle immagini (rosso x) ... a volte
- cache di IE8 viene cancellata Il browser
- apre la pagina HTML/Javascript che richiede e crea dinamicamente alcune immagini. Questa pagina HTML è servita da un server locale Tomcat: 8084.
- La maggior parte delle 10 immagini richieste IE visualizza ROSSO X.
- Rapporto immagine sviluppatore (F12) mostra alcune immagini "dimensione file" come # byte corretti, tuttavia l'immagine non è ancora visualizzata, o alcune dimensione del file di immagini "byte sconosciuti" e l'immagine non funziona.
- A volte vengono visualizzate 2-4 immagini su 10 e il resto fallisce!
- A volte in un furioso furore di colpire aggiornare 1 miliardo di volte, le immagini si presentano.
- Il vero kicker è che quando inserisco un punto di interruzione nel mio server HTTP, il socket non viene neanche aperto. IE non sta nemmeno tentando di recuperare le immagini dal server prima di fallire.
- Infine, se eseguo lo stesso codice ma richiede un'immagine da qualche parte come google maps, funziona in IE senza problemi.
Ecco il mio codice 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>
Per HTTP Server sto usando campione BOOST ASIO HTTP Server Link ho modificato così per qualsiasi richiesta URI, invia un file PNG (ho provato vari file per assicurarsi che non sia codifica PNG che è male). L'intestazione HTTP ha Content-type: "image/png". Quindi viene inviato il tipo mime corretto.
Ho cercato di trovare una soluzione per molto tempo. Leggi vari post:
- Mime type is the problem. Il tipo Mime non è il problema nel mio caso. Ho impostato il tipo di contenuto. Ho anche utilizzato il plugin Firefox LiveHTTPHeader per visualizzare le intestazioni inviate dal server. Ad eccezione di alcune intestazioni di controllo della cache, le intestazioni sono le stesse di quelle inviate da Google in termini di tipo di contenuto:
- Security error. Ok, forse le immagini del dominio incrociato rappresentano un rischio per la sicurezza. O qualcosa sta bloccando la richiesta. Bene, allora perché non fallisce il 100% delle volte ?! Perché IE non richiede alcuna immagine cross-domain? Tuttavia, la richiesta di maps.google.com funziona e il mio funziona solo a volte. Lo stesso vale per qualsiasi firewall o antivirus. Ho anche provato a far funzionare il server su varie porte (80, 8080, 9980).
- Javascript error. Penso che Javascript sia corretto. In realtà stavo ottenendo lo stesso problema con GWT. Quindi pensavo fosse GWT quello era il problema. E c'era un bug di evento con IE e GWT relativi alle immagini. Così ho semplificato il codice solo per Javascript. senza GWT.
- Forse è l'implementazione del server HTTP C++. È una possibilità. Tuttavia Firefox e Chrome funzionano con lo stesso codice senza problemi.
Qualche idea? Grazie.
EDIT Ho aggiunto myHostName a siti attendibili. Ho anche abbassato le impostazioni di sicurezza a basso per i siti interni e internet. Cercherò di disabilitare keepalive sul server se abilitato.Comunque, come ho detto, non vedo affatto IE che tenta di recuperare l'immagine. Il socket non riceve richieste da IE, quindi rimuovere keep-alive dalle intestazioni potrebbe non essere d'aiuto.
Devo amare IE. "Rendere il mondo un posto più arrabbiato">: - O – Bojangles
Hai provato ad aggiungere 'http: // myHostName: 9980 /' all'elenco dei siti attendibili di IE? Inoltre, se il tuo server HTTP supporta keep-alive, hai provato a disabilitarli? –