Я схожу с ума со следующей проблемой, которая не возникает ни в одном другом браузере (Chrome, Firefox):
- Кэш IE8 очищен
- браузер начинает открывать страницу HTML/Javascript, которая запрашивает и создает несколько изображений динамически. Эта страница HTML предоставляется с сервера Tomcat localhost: 8084.
- В большинстве случаев из 10 изображений, которые запрашиваются, IE отображает RED X.
- Отчет об образовании разработчика (F12) показывает некоторые "размер файла" изображений как правильные # байты, но изображение все еще не отображается, а некоторые файлы изображений "неизвестные байты" и изображение не работают.
- Иногда появляется 2-4 из 10 изображений, а остальные терпят неудачу!
- Иногда в безумной ярости удара 1 миллиард раз появляются изображения.
- Настоящим кикером является то, что когда я помещаю точку останова в свой HTTP-сервер, сокет даже не открывается. IE даже не пытается получить изображения с сервера перед сбоем.
- И, наконец, если я запустил один и тот же код, но запросил изображение откуда-то вроде карт google, он работает в IE без проблем.
Вот мой код 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.012318&markers=color:red|color:red|label:C|40.718217,-73.998284&sensor=false')", 1000);
}
</script>
Для HTTP-сервера я использую BOOST-образец ASIO HTTP Server Ссылка Я изменил его так для любого запроса URI, он отправляет png файл (Я пробовал различные файлы, чтобы убедиться, что это не кодировка PNG). Заголовок HTTP имеет Content-type: "image/png". Правильный тип mime отправляется.
Я пытался найти решение в течение длительного времени. Прочитайте различные сообщения:
- Миг-тип - проблема. Тип Mime не является проблемой в моем случае. Я установил Content-type. Я также использовал Firefox LiveHTTPHeader плагин для просмотра заголовков, отправленных с сервера. За исключением некоторых заголовков управления кешем, мои заголовки такие же, как то, что отправляет Google в терминах Content-type:
- Ошибка безопасности. Возможно, изображения с перекрестными доменами представляют собой угрозу безопасности. Или что-то блокирует запрос. Ну, тогда почему он не терпит неудачу в 100% случаев?! Почему IE не запрашивает изображения с перекрестными доменами? Однако запрос maps.google.com работает, а мой работает только иногда. То же самое касается любого брандмауэра или антивируса. Я также попытался запустить сервер на разных портах (80, 8080, 9980).
- Ошибка Javascript. Я думаю, что Javascript верен. У меня действительно была проблема с GWT. Поэтому я подумал, что это проблема GWT. И произошла ошибка события с IE и GWT, связанная с изображениями. Поэтому я упростил код только Javascript. нет GWT.
- Возможно, это реализация С++ HTTP Server. Это возможность. Однако Firefox и Chrome работают с одним и тем же кодом без проблем.
Любые идеи? Спасибо.
ИЗМЕНИТЬ Я добавил myHostName на доверенные сайты. Я также понизил настройки безопасности до минимума для внутренних и интернет-сайтов. Я попытаюсь отключить keepalive на сервере, если он включен. Однако, как я уже говорил, я не вижу, что IE пытается получить изображение вообще. Сокет не получает никаких запросов от IE, поэтому удаление keep-alive из заголовков может не помочь.