我想检索从原始网址X重定向的网址列表,它可能有很多重定向的网址,但我想要所有的网址列表。
例如:
http://www.example.com/origin-url
它将重定向到
http://www.example.com/first-redirect
它将再次重定向到
http://www.example.com/second-redicect
最后是这个
http://www.example.com/final-url
所以我想要的是使用 NodeJs或Express
列出所有这些网址 http://www.example.com/origin-url -->> http://www.example.com/first-redirect
-->> http://www.example.com/second-redicect -->> http://www.example.com/final-url
给我一个建议,我应该使用哪个节点模块来实现这个目标。
提前致谢。
答案 0 :(得分:1)
您可以使用NodeJS的http
模块。您需要检查statusCode
,其中重定向的范围是300-400。请看下面的代码。
var http = require('http')
function listAllRedirectURL(path) {
var reqPath = path;
return new Promise((resolve, reject) => {
var redirectArr = [];
function get(reqPath, cb){
http.get({
hostname: 'localhost',
port: 3000,
path: reqPath,
agent: false // create a new agent just for this one request
}, (res) => {
cb(res)
});
}
function callback(res) {
if (res.headers.hasOwnProperty('location') && res.statusCode >= 300 && res.statusCode < 400) {
console.log(res.headers.location);
redirectArr.push(res.headers.location);
reqPath = (res.headers.location);
get(reqPath, callback);
} else {
resolve(redirectArr);
}
}
get(reqPath, callback);
})
}
listAllRedirectURL('/');