IE8不显示图像(红色x)......有时候

Bud*_*ric 12 javascript image http internet-explorer-8

我很生气,以下问题在任何其他浏览器(Chrome,Firefox)上都没有发生:

  • IE8缓存已清除
  • 浏览器启动会打开请求并动态创建一些图像的HTML/Javascript页面.此HTML页面由Tomcat服务器localhost:8084提供.
  • 在请求的10个图像中,大多数时间IE显示RED X.
  • 开发人员图像报告(F12)将某些图像"文件大小"显示为正确的#字节,但图像仍未显示,或者某些图像文件大小为"未知字节"且图像不起作用.
  • 有时候,10个图像中有2-4个出现,其余图像都出现故障!
  • 有时在疯狂的愤怒中,刷新了10亿次,图像显示出来.
  • 真正的踢球者是,当我在HTTP服务器中设置断点时,套接字甚至没有打开.IE甚至没有尝试在失败之前从服务器获取图像.
  • 最后,如果我运行相同的代码但从谷歌地图等某个地方请求图像,它可以在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>
Run Code Online (Sandbox Code Playgroud)

对于HTTP Server我使用BOOST示例ASIO HTTP Server Link 我修改了它以便对任何URI请求,它发送一个png文件(我尝试了各种文件以确保它不是PNG编码那么糟糕).HTTP标头具有Content-type:"image/png".因此发送了正确的mime类型.

我一直试图找到解决方案很长一段时间.阅读各种帖子:

  • Mime类型是问题.在我的情况下,Mime类型不是问题.我设置了Content-type.我还使用了Firefox LiveHTTPHeader插件来查看从服务器发送的标头.除了一些缓存控制标题,我的标题与Google在内容类型方面发送的标题相同:
  • 安全错误.好吧,也许跨域图像存在安全风险.或者某些东西阻止了请求.那么为什么它不会100%失败?!为什么IE不请求任何跨域图像?然而,maps.google.com请求有效,而我的有时只能使用.同样适用于任何防火墙或防病毒软件.我也尝试在各种端口上运行服务器(80,8080,9980).
  • Javascript错误.我认为Javascript是正确的.我实际上遇到了与GWT相同的问题.所以我认为GWT就是问题所在.IE和GWT存在与图像相关的事件错误.所以我将代码简化为Javascript.没有GWT.
  • 也许这是C++ HTTP Server的实现.这是一种可能性.但Firefox和Chrome使用相同的代码没有问题.

有任何想法吗?谢谢.

编辑 我将myHostName添加到可信站点.我还将内部和互联网站点的安全设置降低到了低.如果启用,我将尝试在服务器上禁用keepalive.但是正如我所提到的,我没有看到IE尝试获取图像.套接字没有收到来自IE的任何请求,因此从头文件中删除keep-alive可能没有帮助.

Bre*_*dan 12

检查图像的颜色模式.

我偶然在Photoshop中将图像的颜色模式从RGB8切换到CMYK,并遇到了同样的问题.IE8无法显示图像,而Firefox完全没有问题.