![](/img/trans.png)
[英]ReactJS sent GET request, responded with 302 redirect, received CORS error
[英]302 Redirect prevents callback in Request
我注意到有些網站沒有關閉302重定向,導致回調無法觸發。
有人知道如何補救嗎?
var request = require('request');
request({url:'http://craigslist.org' }, function (error, response, body)
{
console.log("Callback Never Runs. ");
});
抱歉,在進一步調查后,該建議也失敗了。 但是,當多次嘗試使用您的代碼時,它有時也會起作用。 我想出的最好的辦法是使用超時重試。 超時會觸發complete事件,您可以在其中檢查請求是否確實完成以及是否重試。
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,則可以使用。
var request = require('request');
request({
followAllRedirects: true,
url:'http://craigslist.org'
}, function (error, response, body) {
console.log("Callback Never Runs. ");
});
如果您包含User-Agent
(例如您的瀏覽器 ),它應該可以工作:
request({
url: 'http://craigslist.com',
headers: {
'User-Agent': 'Mozilla/5.0 (...) ...'
}
}, function (err, res, body) {
// ...
});
否則,Craigslist似乎會使連接保持打開狀態,因此它不會'end'
或'complete'
,也不會調用callback
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.