With NPM request module it is quite easy to observe and trace all the intermediate urls before the final url is reached. We can do that using followRedirect
option, which takes either true
or false
, or a function that should return a boolean value. The function takes a single argument response
, that we can use to log the url the request is currently visiting.
For example, let’s try https://google.com
const request = require("request");
request({
url: "https://google.com",
method: "GET",
followRedirect: function(response){
console.log("REDIRECTED FROM: ", response.request.href)
return true
}
}, function(error, response, body){
console.log("ENDED AT: ", response.request.href);
})
The result will show the intermediate url it went through before reaching the correct https://www.google.com
REDIRECTED FROM: https://google.com/
ENDED AT: https://www.google.com/
Similarly, it also works for multiple redirects. Here’s an example of redirecting localhost links till /a4 link is arrived at.
const request = require("request");
request({
url: "http://localhost:8080/a1",
method: "GET",
followRedirect: function(response){
console.log("REDIRECTED FROM: ", response.request.href)
return true
}
}, function(error, response, body){
console.log("ENDED AT: ", response.request.href);
})
REDIRECTED FROM: http://localhost:8080/a1
REDIRECTED FROM: http://localhost:8080/a2
REDIRECTED FROM: http://localhost:8080/a3
ENDED AT: http://localhost:8080/a4
The above redirecting links/apis can easily be generated for testing in node express router as below.
router.get("/a1", (req, res, next) => {
return res.redirect("/a2");
});
router.get("/a2", (req, res, next) => {
return res.redirect("/a3");
});
router.get("/a3", (req, res, next) => {
return res.redirect("/a4");
});
router.get("/a4", (req, res, next) => {
return res.json({success: true});
});
See also
- Node JS Mongo Client for Atlas Data API
- SignatureDoesNotMatch: The request signature we calculated does not match the signature you provided. Check your key and signing method.
- Exactly Same Query Behaving Differently in Mongo Client and Mongoose
- MongoDB Single Update Query to Change the Field Name in All Matching Documents of the Collection
- AWS Layer: Generate nodejs Zip Layer File Based on the Lambda's Dependencies
- In Node JS HTML to PDF conversion, Populate Images From URLs
- Convert HTML to PDF in Nodejs