![](/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.