Tengo una aplicación JS que necesita validar URL. He visto publicaciones que me sugieren usar bibliotecas o expresiones regulares, pero esto no es lo que estoy buscando.
Quiero saber si hay métodos nativos que validen las URL (no hay problema si solo verifica los protocolos http y https).
He probado el módulo dns
dns.lookup(<MY_URL>, {}, (err) => { if (err) { /* do something */ } else { /* do something else */ } }pero parece no funcionar en todos los casos.
Hay varias cosas que puede verificar en la URL.
Puede comprobar que se trata de una URL formada correctamente que tiene todas las partes esperadas. Si no está correctamente formada, entonces no es una URL válida, pero el hecho de que esté correctamente formada no significa que en realidad sea una URL funcional.
Si pasa la primera prueba, puede analizar la URL, obtener el host y ver si el host existe en el DNS. Si no existe en el DNS, probablemente no sea una URL que funcione.
Si existe en el DNS, puede sondear el host en cualquier puerto presente o implícito en la URL y ver si puede obtener alguna respuesta. Suponiendo que se trata de una URL http(s), puede intentar hacer un GET / y ver si obtiene algún tipo de conexión y/o respuesta de red. Si lo hace, entonces aparentemente existe un host http(s) en ese dominio/protocolo/puerto. Si obtiene un error de conexión, parecería que el host no está funcionando.
Si espera que la URL sea algo que funcione para una solicitud GET, entonces puede hacer un GET en la ruta completa de la URL y ver si obtiene una respuesta 2xx o 3xx. Si lo hace, parece que tiene una URL operativa. Si no lo hace, entonces aparentemente no.
Si no sabe si se supone que la URL funciona para un GET, lo único que puede hacer es verificar si el host responde (como en el paso 3) porque no podrá concluir nada probando un GET. de todo el camino.