2014-09-03 35 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();