我使用request检查给定的网址是否损坏。但是,我遇到一个奇怪的情况,即一个给定的URL保持重定向到自身,并且请求无法返回任何响应。但是当我用浏览器打开网址时,会返回状态码200.
任何人都知道为什么请求会进入重定向循环并且无法在浏览器中找到网址时获得响应?如何处理这个问题?谢谢!
request({
uri: 'http://testurl'
}, function (error, response, body) {
......
}
})
以下是设置" request.debug = true"
后的输出REQUEST { uri: 'http://testurl',
callback: [Function],
tunnel: false }
REQUEST make request http://testurl
REQUEST onResponse http://testurl 302 { 'x-cnection': 'close',
date: 'Wed, 12 Nov 2014 23:59:22 GMT',
'transfer-encoding': 'chunked',
location: 'http://testurl',
......,
'x-powered-by': 'Servlet/2.5 JSP/2.1' }
REQUEST redirect http://testurl
REQUEST redirect to http://testurl
REQUEST {}
REQUEST make request http://testurl
REQUEST response end http://testurl 302 { 'x-cnection': 'close',
date: 'Wed, 12 Nov 2014 23:59:22 GMT',
'transfer-encoding': 'chunked',
location: 'http://testurl',
......,
'x-powered-by': 'Servlet/2.5 JSP/2.1' }
REQUEST onResponse http://testurl 302 { 'x-cnection': 'close',
......
更新: 阅读完请求文档后,我意识到它可能与cookie有关。所以我在请求中添加了选项 jar:true ,最后它可以正常工作。
答案 0 :(得分:0)
尝试使用这些请求选项,如文档中所述: - followAllRedirects - 遵循非GET HTTP 3xx响应作为重定向(默认值:false) - maxRedirects - 要遵循的最大重定向数(默认值:10)
request({
uri: 'http://testurl',
followAllRedirects: true,
maxRedirects: 50 // some arbitrary value greater than 10
}, function (error, response, body) {
......
}
})
示例是公共网址吗?如果是这种情况,我想看看。