我注意到一些網站不關閉302重定向導致回調不起火。302重定向防止請求中的回調
任何人都知道如何解決這個問題?
var request = require('request');
request({url:'http://craigslist.org' }, function (error, response, body)
{
console.log("Callback Never Runs. ");
});
我注意到一些網站不關閉302重定向導致回調不起火。302重定向防止請求中的回調
任何人都知道如何解決這個問題?
var request = require('request');
request({url:'http://craigslist.org' }, function (error, response, body)
{
console.log("Callback Never Runs. ");
});
對不起,經過進一步調查此建議也失敗。但是,當您嘗試多次使用您的代碼時也會偶爾工作。我想到的最好的方法是使用超時重試。超時會觸發整個事件,您可以檢查請求是否真的完成,如果不重試。
var request = require('request');
function doRequest(location) {
request({
timeout: 5000, // five seconds
url:location
}, function (error, response, body) {
console.log("Callback Never Runs. ");
}).on("complete", function(response) {
if(!response.complete) setImmediate(function() {
doRequest(location);
});
});
}
doRequest('http://craigslist.org');
您可以進一步擴展爲在發生錯誤前重試X次。
---- ----原始
這可能是在請求的錯誤作爲在這種情況下craigslist.org發送所有302個錯誤。但是,如果您添加followAllRedirects:true to you options it works。
var request = require('request');
request({
followAllRedirects: true,
url:'http://craigslist.org'
}, function (error, response, body) {
console.log("Callback Never Runs. ");
});
它應該工作如果包括User-Agent
(如your browser's):
request({
url: 'http://craigslist.com',
headers: {
'User-Agent': 'Mozilla/5.0 (...) ...'
}
}, function (err, res, body) {
// ...
});
不這樣做,Craigslist的似乎離開連接打開,所以也沒有'end'
或'complete'
和callback
不叫。