readstream readfilesync read nodejs node example createreadstream node.js express hostname

readfilesync - Obtener el nombre de host de la solicitud actual en node.js Express



node read file (5)

Por lo tanto, me puede estar perdiendo algo simple aquí, pero parece que no puedo encontrar la forma de obtener el nombre de host al que se solicitó un objeto de solicitud al que estoy enviando una respuesta.

¿Es posible averiguar qué nombre de host está visitando el usuario actualmente en node.js?



En primer lugar, antes de proporcionar una respuesta, me gustaría ser sincero sobre el hecho de que al confiar en los encabezados estás abriendo la puerta a vulnerabilidades de seguridad como el phishing. Por lo tanto, para fines de redireccionamiento, no use valores de los encabezados sin antes validar que la URL esté autorizada.

Entonces, el nombre de host de su sistema operativo podría no coincidir necesariamente con el DNS. De hecho, una IP podría tener más de un nombre DNS. Por lo tanto, para fines HTTP, no hay garantía de que el nombre de host asignado a su máquina en la configuración de su sistema operativo sea utilizable.

La mejor opción que puedo pensar es obtener su IP pública de escucha HTTP y resolver su nombre a través de DNS. Consulte el método dns.reverse para obtener más información. Pero, una vez más, tenga en cuenta que una IP puede tener varios nombres asociados a ella.


Puedes usar el Módulo os:

var os = require("os"); os.hostname();

Ver http://nodejs.org/docs/latest/api/os.html#os_os_hostname

Advertencias:

  1. si puede trabajar con la dirección IP: las máquinas pueden tener varias tarjetas de red y, a menos que usted especifique, el nodo las escuchará en todas, por lo que no sabe en qué NIC entró la solicitud, antes de que llegue.

  2. El nombre de host es un asunto de DNS. No olvide que varios alias de DNS pueden apuntar a la misma máquina.



Si necesita un nombre de dominio completamente calificado y no tiene una solicitud HTTP, en Linux, podría usar:

var child_process = require("child_process"); child_process.exec("hostname -f", function(err, stdout, stderr) { var hostname = stdout.trim(); });