2014-09-03 36 views
3

我想獲取網站「http://facebook.com」的標題。這應該是一個302永久移動,我想調用響應頭中提供的引用鏈接。node.js - XMLHttpRequest,獲取標題信息

這裏是我的代碼:

var req = new XMLHttpRequest(); 
req.open('GET', "http://facebook.com/", false); 
req.send(null); 
var headers = req.getAllResponseHeaders().toLowerCase(); 
console.log(headers); 

這裏是錯誤消息:

/home/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:230 
for (var i in response.headers) { 

TypeError: Cannot read property 'headers' of undefined 
    at getAllResponseHeaders (/home/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:230:27) 
    at Object.<anonymous> (/home/browse/init.js:67:19) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Function.Module.runMain (module.js:497:10) 
    at startup (node.js:119:16) 
    at node.js:906:3 

我希望你能幫助我。

+0

你是否真的需要'' XMLHttpRequest''或者只是[http.request](http://nodejs.org/api/http.html#http_http_request_options_callback)或者可能是[mikeal/request](https://github.com/mikeal/request)? – sarbbottam 2014-09-03 19:23:13

+0

我會用'http.request'來試試 – jan 2014-09-03 19:24:04

回答

5

下面的代碼應該足夠了,根據評論,你不需要XHR

var http = require('http'); 

var options = { 
    hostname: 'www.google.com', 
    port: 80, 
    method: 'GET' 
}; 

var req = http.request(options, function(res) { 
    console.log('headers:\n' + JSON.stringify(res.headers)); 
    res.setEncoding('utf8'); 
    res.on('data', function (chunk) { 
    console.log('body:\n' + chunk); 
    }); 
}); 

req.on('error', function(e) { 
    console.log('problem with request: ' + e.message); 
}); 
req.end(); 
8

如果您想要使用帶有Node js的xmlHttpRequest,您必須安裝必需的軟件包。

首先,此線在控制檯:

npm install xmlhttprequest 

然後,當你寫你的服務器上的.js文件,你必須表明第一

var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest; 
var xhr = new XMLHttpRequest();