【问题标题】:Images stored on Amazon AWS S3 not rendered in Internet Explorer存储在 Amazon AWS S3 上的图像未在 Internet Explorer 中呈现
【发布时间】:2015-06-06 08:15:54
【问题描述】:

对于我的 AdLit Web 应用程序,我将一些图像存储在 Amazon AWS S3 上。但这些图像不会在任何版本的 Internet Explorer 中呈现(用 IE8、IE9 和 IE11 测试)

您可以在以下位置查看:

http://www.adlit.be/team

图像会在 Safari、Firefox 和 Chrome 中呈现,但不会在 Internet Explorer 中呈现。

有人遇到过这个问题吗?又该如何解决?

感谢您的帮助,

安东尼

【问题讨论】:

  • 我也遇到了同样的问题,目前还没有解决办法。我发现它仍然无法在您的页面上运行,但您有什么发现吗?
  • 这可能是您似乎正在使用的 refile gem 的问题
  • @JustMichael,但它适用于 Chrome 和 Firefox。 Om 只有 IE 的问题

标签: internet-explorer amazon-s3


【解决方案1】:




根据W3C spec,无论服务器响应的 Content-Type 标头中声明了什么,图像通常都会被 mime-sniffed。

但是因为有也是一个 MS 专有的 X-Content-Type-Options:nosniff 标头存在,IE 在这种情况下不执行 mime-sniff 步骤。因此,根据 W3C,Content-Type 标头给出了最终的 mime 类型。但那是“application/octet-stream”,它不是受支持的图像类型。



(Fiddler 过滤器 - 点击查看完整尺寸)

【讨论】:

    【解决方案2】:

    这些照片是 JPEG 图像,但它们都被命名为 image,没有扩展名。这意味着您的服务器没有为他们提供图像内容类型。您的服务器改为发送以下 HTTP 标头:

    Content-Type:application/octet-stream
    

    Chrome 和 Firefox 显然足够聪明,可以注意到请求来自 <img> 元素,并从二进制内容本身识别 JPEG 格式。但是,如果您让您的服务器发送一个更合适的标头,您会让事情变得更容易:

    Content-Type:image/jpeg
    

    我有两个猜测:

    1. 如果您将服务器上的照片从 image 重命名为 image.jpgimage.jpeg,那么您的服务器将推断出正确的 Content-Type,并且
    2. 如果 Content-Type 正确,IE 将显示照片。

    哦,等等,亚马逊 S3。我认为来自 S3 的 Web 服务会从文件扩展名中推断出 Content-Type,但如果不是,您可以明确地set metadata on S3 objects,包括(尤其是)Content-Type。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-17
      • 1970-01-01
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多