node.js http.get chunk没有正确返回结构

时间:2013-03-25 18:58:24

标签: node.js

这可能会因为在铁路运营控制器内部运行而变得复杂(还没有进入复合),不要这么认为,不要认为这里有什么铁路干扰。

我有以下内容:

var http = require('follow-redirects').http;
var https = require('follow-redirects').https;
action('index', function (req,res) {
    var url = decodeURIComponent(request.query.url);
    var resobj;
    var stat;
    var headers;
    http.get(url, function (r) { 
        stat = r.statusCode;
        headers = r.headers;
    r.on('data', function (chunk) {
            resobj += chunk.toString();
        });
        r.on('end', responder);
    });
    function responder(){
    response.writeHead(200, {
            'Content-Type': headers["content-type"]
        })
        response.write(resobj);
        response.end();
    }

});

request.query.url来自铁路,或者来自明确的底层,无论如何它都能正确返回。但是每当我在各种网站上运行时,我都有两个问题

  1. 未定义的文本在其他任何内容之前出现,例如在doctype声明之前。

  2. 块的结构似乎已关闭,导致浏览器修复html(可能是由'undefined'字符串引起的),这种修复意味着渲染时通常在头部找到的元素最终会出现在体,

  3. 关于修复此问题的任何想法 - 如果有人可以告诉我如何执行上面的代码,以便我可以使用其中一个节点phantomjs桥接器获得至少同样好的结果,这将是很好的。

1 个答案:

答案 0 :(得分:0)

这个问题大约有一年的历史,但我试图解决类似的问题。节点在流中处理这些响应以保持其足迹相当低。要求Node缓冲它们并尝试连接chucks比需要更多的工作。我发现使用mikeal的请求包是处理响应“body”的最简单方法https://github.com/mikeal/request

var request = require('request');
request('http://www.google.com', function (error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body) // Print the google web page.
    }
})