2007年2月24日星期六

中国博客服务提供商的胸怀

有不少网友包括我都碰到过这样的问题,百度空间中的图片转贴到其它博客或者论坛时图片都无法正常显示,而只显示"该图片来源于百度空间",让人十分不爽。为什么原图无法正常显示?博客服务器怎么知道图片是被其它网页引用了呢?其实,技术上非常简单。如果你抓一下浏览器发的http请求,你会看到这样的内容:
Host ad4.sina.com.cn
User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1
Accept */*
Accept-Language zh-cn,zh;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset gb2312,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
Connection keep-alive
Referer http://ent.sina.com.cn/

注意最后一个Referer,表明了当前浏览器是停留在哪个页面上。博客服务器根据此很容易判断出当前用户所看网页是不是在自己的域内。这样做的目的是为了节省自己的资源,免得为他人做嫁衣。就跟银行跨行查询收费的逻辑相当。这么做的BSP还真不止百度一家,百度的"该图片来源于百度空间"的图片至少还是可以点击的,链接到baidu的原图上;网易做的更傻,显示一个"此图片仅限于网易用户交流沟通使用!",一副你偷了他们家东西的嘴脸,而且连原图的链接都没有,真是傻横傻横的;搜狐也限制,不过你看到的不是一个图片,而是个链接,后面注明搜狐相册。让我吃惊的是新浪博客似乎对此没做限制,我猜有两种可能,一是新浪比较大气,不在乎;二是新浪技术太差,不知道怎么限制。我比较倾向于后一种,在我心目中新浪是家媒体公司,不是家网络公司。

我不禁要问,我们国内的博客服务提供商就这点胸怀么?人家Blogger会这么做么?当然不会。当用户看到"该图片来源于百度空间"的大白图或是"此图片仅限于网易用户交流沟通使用!"的警告就好比当年用word的时候图片变成了大红叉一样心里那叫一个不舒服。诚然,如果它们不这么做别人可能感觉不到它们的存在,也白白用了它们的资源。但在这个web2.0的年代,开放、mash-up才使得我们的网络更加精彩,如果按照中国BSP的逻辑,flickr就关门别做了。flickr不仅不限制公开的图片被转贴,而且还有“blog it”来鼓励你把图片放到blog上。如果BSP把这种有着自己名字的大白图当作一种对自己的广告的话,就好那个"恒源祥,羊、羊、羊!"的广告一样,令人印象深刻但深恶痛绝。

从网易博客随便拷的图片:

从百度空间随便拷的图片:

什么时候你们能看到原图了,表明它们领悟了。

考虑的中国的特殊情况,我觉得一种折衷的办法是这样的,第一次显示一个“该图片来自于XXX,请点击查看原图”,并带上这样的javascript:
<img src="http://img.blog.163.com/photo/1RCuv8gZRqJttlutMs0rPA==/2821223691571019719.jpg" onclick="http://img.blog.163.com/photo/1RCuv8gZRqJttlutMs0rPA==/2821223691571019719.jpg?code=rightcode />

onclick中带的参数code是第一次load的时候图片服务器返回的,以后图片服务器就能根据code的正确与否决定是否返回原图。

唉,这简直是向恶势力妥协啊。

2007-5-12:
从别人那里学来的方法可以解决图片在博客中无法显示的问题,在图片链接前加上http://imgred.com/就可以了,比如:http://imgred.com/http://album.sina.com.cn/pic/4b1115a502000d9m

http://www.fwolf.com/blog/post/320 上对此进行了更深入的阐述,里面提到的在firefox更改配置的方法简单而有效。

1 条评论:

shangwx 说...

新浪也同流合污了,“此图片仅限于新浪博客用户交流与沟通”