http.request返回错误的statusCode?

时间:2014-09-14 15:22:04

标签: node.js http

我使用此代码:

var options = {
    hostname: 'torcache.net',
    path: '/torrent/4C1E01E1E7AE19082F4BAC9C3C82B5B2CD0EEA23.torrent',
    port: 80,
    method: 'GET'
};

http.request(options, function (res) {

    var chunks = [];
    res.on('data', function (chunk) {
        chunks.push(chunk);
    });

    res.on('end', function () {
        if (res.statusCode !== 200) {
            callback(res.statusCode);
            return;
        }

        //...
    });
}).on('error', function (err) {
    callback(err);
}).end();

statusCode是200,但打开网址(http://torcache.net/torrent/4C1E01E1E7AE19082F4BAC9C3C82B5B2CD0EEA23.torrent)是Chrome,statusCode是404.代码有什么问题?

更新
我发现是否使用这个选项:

{
    hostname: 'torcache.net',
    path: '/torrent/4C1E01E1E7AE19082F4BAC9C3C82B5B2CD0EEA23.torrent',
    port: 80,
    method: 'GET',
    secureProtocol: 'SSLv3_method',
    headers: {
        'accept-charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
        'accept-language': 'en-US,en;q=0.8',
        'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.13+ (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2',
        'accept-encoding': 'gzip,deflate',
        'referer': 'http://torcache.net'  // !!!
    }
}

headers ['referer'] 不为null时,res.statusCode是错误的。但我不知道为什么?

1 个答案:

答案 0 :(得分:1)

请求确实以200返回。稍后将JavaScript重定向到404页面,Node不跟随。