Получить имя хоста текущего запроса в node.js Express

Таким образом, я могу пропустить что-то простое здесь, но я не могу найти способ получить имя хоста, из которого был запрошен объект запроса, на который я отправляю ответ.

Можно ли выяснить, какое имя хоста в данный момент посетил пользователь из node.js?

    5 Solutions collect form web for “Получить имя хоста текущего запроса в node.js Express”

    Если вы говорите об HTTP-запросе, вы можете найти узел запроса в:

     request.headers.host 

    Но это зависит от входящего запроса.

    Подробнее на http://nodejs.org/docs/v0.4.12/api/http.html#http.ServerRequest

    Если вы ищете информацию о машине / на месте, попробуйте объект процесса.

    Вы можете использовать модуль os:

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

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

    Предостережения:

    1. если вы можете работать с IP-адресом. У машин может быть несколько сетевых карт, и если вы не укажете, что узел будет прослушивать их все, поэтому вы не знаете, на какой сетевой адаптер был включен запрос, прежде чем он войдет.

    2. Hostname – это вопрос DNS. Не забывайте, что несколько псевдонимов DNS могут указывать на один и тот же компьютер.

    Если вам требуется полное доменное имя и не имеет HTTP-запроса, в Linux вы можете использовать:

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

    Прежде всего, прежде чем предоставить ответ, я хотел бы быть уверенным в том, что, доверяя заголовкам, вы открываете дверь для уязвимостей безопасности, таких как фишинг. Поэтому для целей перенаправления не используйте значения из заголовков без предварительной проверки URL-адреса.

    Затем имя хоста вашей операционной системы может не совпадать с DNS-адресом. Фактически, один IP может иметь более одного имени DNS. Таким образом, для целей HTTP нет гарантии, что имя хоста, назначенное вашему компьютеру в конфигурации вашей операционной системы, можно использовать.

    Лучший выбор, о котором я могу думать, – это получить публичный IP-прослушиватель HTTP и разрешить его имя через DNS. Для dns.reverse дополнительной информации см. Метод dns.reverse . Но, опять же, обратите внимание, что IP может иметь несколько имен, связанных с ним.

    Вот альтернатива

     req.hostname 

    Читайте об этом в Express Docs .

    Interesting Posts

    Почему C # запрещает чтение только локальных переменных?

    Почему WinDirStat сообщает, что меньше места используется, чем Windows?

    Написание BMP-изображения в чистом c / c ++ без других библиотек

    Как получить доступ к элементу шаблона управления из кода

    Почему C # не поддерживает возврат ссылок?

    Почему setSelected on JCheckBox теряет эффект?

    Сохранение позиции прокрутки панели на частичной обратной передаче ASP.NET

    VBA Macro On Timer для запуска кода с каждым заданным количеством секунд, то есть 120 секунд

    Как переназначить специальные клавиши на ноутбуке Asus?

    Использовать JAXB для создания объекта из XML-строки

    Eigen и std :: vector

    Кнопки раскраски в Android с материальным дизайном и AppCompat

    Циркулярная ссылка обнаружила исключение при сериализации объекта в JSON

    Проверьте, содержит ли один список элемент из другого

    Пользовательский Drawable для ProgressBar / ProgressDialog

    Давайте будем гением компьютера.