jadę szalony z następującym problemem, który nie zdarza się w każdej innej przeglądarce (Chrome, Firefox):IE8 nie wyświetlania obrazów (czerwony x) ... czasami
- IE8 pamięć podręczna jest wyczyszczone
- przeglądarka uruchamia się otwiera stronę HTML/Javascript, która dynamicznie żąda i tworzy kilka obrazów. Ta strona HTML jest obsługiwana z lokalnego serwera lokacji Tomcat: 8084.
- Większość czasu na 10 obrazów, które są żądane IE wyświetla CZERWONY X.
- Raport obrazu dewelopera (F12) pokazuje niektóre obrazy "rozmiar pliku" jako poprawne # bajty, ale obraz nadal nie jest wyświetlany, lub niektóre rozmiar pliku obrazów "nieznane bajty" i obraz nie działa.
- Czasami pojawia się 2-4 na 10 zdjęć, a reszta zawodzi!
- Czasami w szalonej furii uderzenia odświeżenia 1 miliard razy, pojawiają się obrazy.
- Prawdziwym kicker jest to, że po umieszczeniu punktu przerwania w moim serwerze HTTP, gniazdo nie jest nawet otwarte. IE nawet nie próbuje pobrać obrazów z serwera przed awarią.
- I na koniec, jeśli uruchomię ten sam kod, ale zażądam obrazu z mapy google, działa on w IE bez problemów.
Oto mój kod 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>
dla serwera HTTP używam przykładowy BOOST ASIO HTTP Server Link zmodyfikowałem go tak na każde żądanie URI, wysyła plik PNG (Próbowałam różne pliki, aby upewnić się, że kodowanie PNG nie jest złe). Nagłówek HTTP ma typ Content: "image/png". Więc poprawny typ MIME jest wysyłany.
Próbowałem znaleźć rozwiązanie przez długi czas. Przeczytaj różne posty:
- Mime type is the problem. Typ Mime nie jest problemem w moim przypadku. Ustawiam typ zawartości. Użyłem także wtyczki Firefox LiveHTTPHeader do wyświetlenia nagłówków wysłanych z serwera. Z wyjątkiem niektórych nagłówków kontroli pamięci podręcznej, moje nagłówki są takie same, jak to, które wysyła Google w zakresie typu zawartości:
- Security error. Ok może obrazy w domenie krzyżowej stanowią zagrożenie dla bezpieczeństwa. Lub coś blokuje prośbę. Więc dlaczego nie zawodzi w 100% przypadków ?! Dlaczego IE nie prosi o obrazy z różnych domen? Jednak żądanie maps.google.com działa, a moje działa tylko czasami. To samo dotyczy każdej zapory lub antywirusa. Próbowałem także uruchomić serwer na różnych portach (80, 8080, 9980).
- Javascript error. Myślę, że JavaScript jest poprawny. Tak naprawdę miałem ten sam problem z GWT. Więc myślałem, że to GWT to był problem. I wystąpił błąd zdarzenia z IE i GWT związany z obrazami. Uprościłem kod do samej Javascript. brak GWT.
- Może to implementacja serwera HTTP C++. To możliwość. Jednak Firefox i chrome działają z tym samym kodem bez problemów.
Wszelkie pomysły? Dzięki.
EDYTOWANIE Dodałem myHostName do zaufanych stron. Obniżyłem także ustawienia zabezpieczeń na niskie dla stron wewnętrznych i internetowych. Zamierzam spróbować wyłączyć keepalive na serwerze, jeśli jest włączona.Jednak jak już wspomniałem, nie widzę, aby IE podejmował próbę pobrania obrazu. Gniazdo nie otrzymuje żadnych żądań z IE, więc usunięcie keep-alive z nagłówków może nie pomóc.
Muszę kochać IE. "Czynienie świata gorszym miejscem">: - O – Bojangles
Czy próbowałeś dodać 'http: // myHostName: 9980 /' do listy zaufanych witryn IE? Ponadto, jeśli twój serwer HTTP obsługuje alfa, czy próbowałeś je wyłączyć? –