最近在学习过程中碰到一个问题,以localhost形式打开页面后,下面这段HTML标签无法获取远程的图片内容(403错误),但是如果直接以FILE的形式打开页面则可以获取正确的图片信息。猜测是请求头中的Referer引起的,但我对HTTP不是太熟悉,所以想请问大神是否是这个原因,另外服务器端为什么要这么作这样的限制?
<img src="http://pic2.zhimg.com/68f9ef80e049bf3d943317f5f8700d8d.jpg" />
为证实这个想法,我用了下面这段Node程序,
var fs = require('fs'),
http = require('http');
var option = {
host: 'pic2.zhimg.com',
path: '/68f9ef80e049bf3d943317f5f8700d8d.jpg',
method: 'GET',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Referer': "http://localhost:8080/index.html", // 如果注释这行就没有问题
'User-Agent': "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36"
}
};
http.get(option, function (res) {
res.pipe(fs.createWriteStream('out.jpg')).on('finish', function () {
console.log('finish loading');
});
}).on('error', function (err) {
console.error('got error', err);
});
1
ooxxcc 2015-04-29 14:33:10 +08:00
google 防盗链
|
2
Arrowing 2015-04-29 14:44:30 +08:00
防盗链+1
|
4
cevincheung 2015-04-29 14:52:46 +08:00
@Tsung1990 需要把图片存储到本地然后再引用。
|
6
gamexg 2015-04-29 14:57:45 +08:00
|