我有一個小程序,需要從使用node.js的站點抓取圖標。這在大多數情況下,但與apple.com,我得到的錯誤,我無法理解或修復:用node.js抓取圖標
var sys= require('sys');
var fs= require('fs');
var http = require('http');
var rurl = http.createClient(80, 'apple.com');
var requestUrl = 'http://www.apple.com/favicon.ico';
var request = rurl.request('GET', requestUrl, {"Content-Type": "image/x-icon", "host" : "apple.com" });
request.end();
request.addListener('response', function (response)
{
response.setEncoding('binary');
var body = '';
response.addListener('data', function (chunk) {
body += chunk;
});
response.addListener("end", function() {
});
});
當我提出這個要求的迴應是:
<head><body> This object may be found <a HREF="http://www.apple.com/favicon.ico">here</a> </body>
作爲結果,我已經通過客戶端創建步驟中的主機名變體以及使用'www.apple.com'的url請求以各種方式修改了上述代碼,但通常我只是從節點獲取錯誤,如下所示:
node.js:63
throw e;
^
Error: Parse Error
at Client.ondata (http:901:22)
at IOWatcher.callback (net:494:29)
at node.js:769:9
此外,我不想使用谷歌服務來抓住圖標。
更改主機和使用接受工作:圖像/ X-圖標,而不是,結果又是:
這個對象,可以發現here – jimt 2010-09-12 16:47:52@jimt井重要的一點是Host頭,而不是Accept的東西...... – 2010-09-12 18:13:16