对于我的AdLit网络应用程序,我将一些图像存储在Amazon AWS S3上。但是这些图像无法在任何版本的Internet Explorer中呈现(使用IE8,IE9和IE11测试)
你可以查看:
图像在Safari,Firefox和Chrome中呈现,但不在Internet Explorer中呈现。
有没有人有过这个问题的经验?它怎么能修复?
感谢您的帮助,
安东尼
答案 0 :(得分:7)
根据W3C spec,无论在服务器响应Content-Type标头中声明什么,图像通常都会被mime-sniffed。但是,由于还存在MS专有的X-Content-Type-Options:nosniff标头,因此IE在这种情况下不执行mime-sniff步骤。因此,根据W3C,Content-Type标头给出了最终的mime类型。但那是“application / octet-stream”,它不是支持的图像类型。
(小提琴过滤器 - 点击查看完整大小)< / p>
答案 1 :(得分:2)
照片是JPEG图像,但它们都是image
,没有扩展名。这意味着您的服务器没有向他们提供图像内容类型。您的服务器改为发送HTTP标头:
Content-Type:application/octet-stream
Chrome和Firefox显然足够聪明,可以注意到请求来自<img>
元素,并从二进制内容本身识别JPEG格式。但是如果让服务器发送更合适的标题,你会让事情变得更容易:
Content-Type:image/jpeg
我有两个猜测:
image
重命名为image.jpg
或image.jpeg
,那么您的服务器将推断出正确的内容类型,哦等等,亚马逊S3。我认为来自S3的Web服务将从文件扩展名推断出Content-Type,但如果没有,您可以明确set metadata on S3 objects,包括(特别是)Content-Type。