En realidad, no quiero seguir la redirección como se veaquí , simplemente quiero detectar una redirección.
Aquí está mi código actual. Tenga en cuenta que solo quiero detectar una redirección y no hacer nada con ella. El código funciona bien, pero descarga un galimatías en una redirección.
No quiero usar ningún módulo externo. Creo que hay una cosa llamada encabezados que podrían usarse.
const https = require('https'); const fs = require('fs'); function download(entry, destination, callback) { const writeStream = fs.createWriteStream(destination); const request = https.get(entry, (response) => { response.pipe(writeStream); }).on('error', (error) => { console.log('DEBUG:', error); }); }Un buen ejemplo de una redirección está aquí:
puedes hacer algo como esto
if ( response.statusCode >= 300 && response.statusCode < 400 && 'location' in response.headers ) { console.log('redirect detected'); }código completo:
const https = require('https'); const fs = require('fs'); function download(entry, destination, callback) { const writeStream = fs.createWriteStream(destination); const request = https.get(entry, (response) => { if ( response.statusCode >= 300 && response.statusCode < 400 && 'location' in response.headers ) { console.log('redirect detected'); } response.pipe(writeStream); }).on('error', (error) => { console.log('DEBUG:', error); }); }Según https://github.com/request/request/blob/86b99b671a3c86f4f963a6c67047343fd8edae8f/request.js#L762
Si observa sus encabezados de respuesta, notará que cada vez que hay una redirección, se completa una propiedad llamada ubicación.
Entonces, para verificar si hay una redirección, simplemente haga
if(response.headers.location) { // redirect detected }