Node-http-proxy:对ressources的请求被重定向到index.html

时间:2015-03-06 13:40:53

标签: javascript node.js http-proxy

我在使用node.js和node-http-proxy模块时遇到了问题。 在某些网页上,未加载资源,因为服务器会将请求重定向到原始html文件。因此,对于每个图片或css文件,都会再次加载index.html文件。奇怪的是,这不会发生在所有网站上,只会发生在某些网站上。 这是我的代码:

var express = require('express'),
    httpProxy = require('http-proxy'),
var router = express.Router();
var proxy = new httpProxy.createProxyServer();

router.get('/:url', function(req, res) {
    var options = {
        target: {
            host: req.params.url,
            port: 80,
            path: 'http://'
        },
        timeout: 5000,
        proxyTimeout: 5000,
        xfwd: true,
        prependPath: true
    };
    proxy.web(req, res, options);
});

这不起作用的网页示例http://www.kicker.de 我已经尝试了几个选项,比如hostRewrite或changeOrigin,但那些似乎没有改变它。

1 个答案:

答案 0 :(得分:0)

我强烈建议您使用npm模块request。我在使用重定向通过http和https获取文件的其他方法时遇到问题。 request处理得很好。以下是我获取内容的一些代码。

var request = require("request");

...

function fetchImage(url, callback) {
    var file, tmpFile;

    async.waterfall([
        function (next) {
            tmp.file(next);
        },
        function (location, descriptior, cleanupCallback, next) {
            console.log(location);
            tmpFile = location + ".png"
            console.log("fetching", url, "and saving it as", tmpFile);
            var download = request(url).pipe(fs.createWriteStream(tmpFile));

            download.on("finish", function(){
                console.log("finished downloading picture", tmpFile);
                fs.stat(tmpFile, next)
            });
        }
    ], callback);
}