有没有办法检测从重定向的img src加载什么类型的图像?

时间:2012-12-19 20:56:11

标签: javascript facebook mime-types

我正在使用此Facebook服务返回个人资料照片。

<img src="http://graph.facebook.com/username/picture">

如果fb用户未设置个人资料照片,该服务会重定向到此Facebook匿名人员图片:http://static.ak.fbcdn.net/rsrc.php/v2/yo/r/UlIqmHJn-SK.gif。我想避免提出这些。

是否有办法使用javascript检测返回的图片是否为http://static.ak.fbcdn.net/rsrc.php/v2/yo/r/UlIqmHJn-SK.gif。该地址来自CDN,所以我想知道我们是否可以检查文件大小是&lt; = 390B而mime-type是image / gif?

编辑:不幸的是,仅涉及现代浏览器(HTML5和canvas)的解决方案可能对我不起作用,因为要求是我们仍然需要支持回到ie7。

1 个答案:

答案 0 :(得分:1)

是的,您可以使用AJAX简单地提出请求并自己解析MIME类型。事实上,Facebook包括这个标题:

Access-Control-Allow-Origin: *

授权CORS(跨源资源共享),现在大多数浏览器都支持。

如果您绝对必须支持旧浏览器,请查看Open Graph文档:

https://developers.facebook.com/docs/reference/api/using-pictures/

您可以使用JSONP获取其元数据,而不是直接获取图片。这应该适用于IE7:

function checkPictureUrl(userName, cb) {
  $.ajax({
    url: 'http://graph.facebook.com/' + userName + '/picture?redirect=false',
    dataType: 'jsonp',
    success: function (json) {
      // user only has a default profile picture
      if(json.data.is_silhouette)
        return cb(null);
      else
        return cb(null, json.data.url);
    },
    error: function (err) {
      cb(err);
    }
  });
}