我正在使用Amazon S3来托管图片.S3存储桶是私有的,因此我生成一个临时URL(使用Right AWS),到期时间为5分钟,以允许渲染图像.URL看起来像这样(注意:下面的URL不起作用):
https://mybucket.s3.amazonaws.com:443/attachments%2F30%2Fsmall.png?Signature=J%2BXzQd95myCNv0Re8arMhuTFSvk%3D&Expires=1235511662&AWSAccessKeyId=1K3MW21E6T8LWBY94C01
这很好用,我可以将URL粘贴到Firefox中并显示图像.IE也是如此.但是,当我在Safari中尝试时,URL似乎已解析但未显示任何图像.类似地,如果我尝试在网页上的IMG标记的src属性中使用URL,则Safari不会呈现任何内容(在所有其他浏览器中都很好),例如:
alt text http://lylo.co.uk/screenshot.png
有没有人见过这种行为,你能否指出我可能做错了什么?
通过在S3库中进行一些挖掘,我正在使用我在这里找到了问题.
将文件上载到S3时,必须设置Content-Type
标题.在我的情况下,我上传了两个文件,一个是Content-Type为的原始PDF文件application/pdf
,另一个是PNG格式的缩略图预览.我用来上传到S3的库确实设置了Content-Type
标题,但它正在application/pdf
为原始PDF和PNG缩略图设置标题.
似乎Firefox和IE很乐意从S3渲染PNG图像,即使它有错误的Content-Type
标题,而Safari根本不喜欢这样,因此不会渲染图像.
因此,修补我正在使用的S3库,以便Content-Type
在PNG缩略图上正确设置正确的标头解决了这个问题.
唷.