2014-01-28 84 views
0

好吧我試圖獲取這個特定的URL和node.js行爲的標題讓我感到困惑。Node.js http.get請求從curl請求中獲取完全不同的頭文件

我的代碼:

var http = require('http'); 

var req = http.get("http://listen.radionomy.com/abc-lounge", function(res) { 
    console.log("headers: ", res.headers); 
}); 

打印出:

頭:{ '緩存控制': '私', '內容類型':「text/html的; charset = utf-8',server:'Microsoft-IIS/7.5','x-aspnet-version': '4.0.30319','x-powered-by':'ASP.NET',date:'星期二,2014年1月28日 十四時18分27秒格林尼治標準時間」, '內容長度': '8309'}

現在,我嘗試了用頭在命令行卷曲:

捲曲-I http://listen.radionomy.com/abc-lounge

這打印出我正在尋找什麼(重定向網址):

HTTP/1.1 302實測值
緩存控制:私人
的Content-Length:0
內容類型:應用/八位字節流
位置: http://streaming.radionomy.com/ABC-Lounge
服務器: 微軟-IIS/7.5
X- AspNetMvc-版本:5.0
X-ASPNET-版本: 4.0.30319
X供電,通過:ASP.NET
日期:星期二,2014年1月28日14時19分二十秒GMT

我不明白爲什麼節點正在獲取一組不同的標題。它不應該遵循默認情況下的重定向。我甚至不認爲這是一個重定向問題。

回答

0

我假裝curl要求加入一些headershttp.get像這樣:

var http = require('http'); 

var options = { 
    host: 'listen.radionomy.com', 
    path: '/abc-lounge', 
    headers: { 
     'user-agent': 'curl/7.31.0', 
     'accept': '*/*'   
    } 
}; 

var req = http.get(options, function(res) { 
    console.log('status:', res.statusCode) 
    console.log("headers: ", res.headers); 
}); 

輸出將是:

status: 302 
headers: { 'cache-control': 'private', 
    'content-type': 'application/octet-stream', 
    location: 'http://streaming.radionomy.com/ABC-Lounge', 
    server: 'Microsoft-IIS/7.5', 
    'x-aspnetmvc-version': '5.0', 
    'x-aspnet-version': '4.0.30319', 
    'x-powered-by': 'ASP.NET', 
    date: 'Tue, 28 Jan 2014 15:02:16 GMT', 
    'content-length': '0' } 
+0

謝謝,這有助於。奇怪的是,如果你不通過「用戶代理」,listen.radionomy.com會爲你提供一組不同的標題。這裏的節點沒什麼問題,就像我認爲這不是重定向問題。 –

2

這是因爲http.get實際上遵循重定向

+1

節點的'http.get()'不應該遵循。嘗試一個SO的「共享」鏈接,它包括日誌中的位置:'/ questions/...'。 –