1

これは、railwayjsコントローラー(まだ複合に移行していない)の内部で実行することによって複雑になる可能性がありますが、そうは思わないでください。ただし、ここに鉄道が干渉しているものはないと思います。

私は次のものを持っています:

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は鉄道からのものであるか、またはおそらくエクスプレスの基礎からのものであり、いずれにせよ正しく返されます。ただし、これをさまざまなWebサイトで実行すると、2つの問題が発生します。

  1. 未定義のテキストは、他の何よりも前に出てきます。たとえば、doctype宣言の前です。

  2. チャンクの構造がオフになっているようで、ブラウザがhtmlを修正するようになっています(「未定義」の文字列が原因である可能性があります)。この修正は、レンダリング時に通常は頭にある要素が本体に含まれることを意味します。

これを修正するためのアイデア-また、ノードphantomjsブリッジの1つで少なくとも同じくらい良い結果を得ることができるように、誰かが上記のコードを実行する方法を教えてくれるなら、それは素晴らしいことです。

4

1 に答える 1

0

この質問は約1年前のものですが、私は同様の問題を解決しようとしてそれに着手しました。ノードはこれらの応答をストリームで処理して、フットプリントをかなり低く保ちます。ノードにそれらをバッファリングするように依頼し、チャックを連結しようとすることは、必要以上の作業です。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.
    }
})
于 2014-01-31T19:57:36.920 に答える