Итак, я могу пропустить что-то простое здесь, но я не могу найти способ получить имя хоста, с которого запрашивал объект запроса, с которым я отправляю ответ.
Можно ли определить, какое имя хоста посетит пользователь из node.js?
Итак, я могу пропустить что-то простое здесь, но я не могу найти способ получить имя хоста, с которого запрашивал объект запроса, с которым я отправляю ответ.
Можно ли определить, какое имя хоста посетит пользователь из node.js?
Если вы говорите о 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
Предостережения:
если вы можете работать с IP-адресом - У машин может быть несколько сетевых карт, и если вы не укажете его, то node будет прослушивать все из них, поэтому вы не знаете, на какой NIC запрос пришел, прежде чем он войдет.
Имя хоста - это вопрос 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
. Но, опять же, обратите внимание, что IP может иметь несколько имен, связанных с ним.