1

这可能会因为在 railjs 控制器内部运行而变得复杂(还没有移动到化合物中),但不要这么认为,不要认为铁路会干扰这里的任何东西。

我有以下内容:

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. 文本 undefined 出现在其他任何内容之前,例如在 doctype 声明之前。

  2. 块的结构似乎是关闭的,导致浏览器修复 html(可能是由“未定义”字符串引起的),这种修复意味着通常在渲染时在头部找到的元素最终在正文中,

有关解决此问题的任何想法-如果有人可以向我展示如何执行上述代码,以便我可以使用其中一个节点 phantomjs 桥接器获得至少一样好的结果,那就太好了。

4

1 回答 1

0

这个问题大约有一年的历史,但我试图解决类似的问题。Node 在流中处理这些响应以保持其占用空间相当低。要求 Node 缓冲它们并尝试连接夹头是不必要的工作。我发现使用 mikeal 的请求包是处理响应“正文”的最简单方法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.
    }
})
于 2014-01-31T19:57:36.920 回答