Разрешение имени в запросах http - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь просто сделать http-запрос на сервер внутри моей компании с сервера dev. Я понял, что в зависимости от исходного / конечного сервера, я мог бы или не мог быть вынужден использовать квалифицированное имя конечного сервера, например srvdestination.com.company.world вместо просто srvdestination.

Я согласен с этим, но я не понимаю, как работает мое соединение с БД?

Допустим, у меня есть srvorigin. Теперь, чтобы сделать http запрос, я должен использовать квалифицированное имя srvdestination.com.company.world. Однако для подключения к базе данных достаточно строки подключения с неопределенным именем psycopg.connect(host='srvdestination', ...) Я понимаю, что протоколы разные, но как psycopg2 делает для разрешения реального имени?

1 Ответ

0 голосов
/ 23 мая 2018

Сначала все зависит от того, как настроена подсистема разрешения имен вашей ОС.Если вы работаете в Unix (вы не указали), это регулируется /etc/resolv.conf.Здесь вы можете предоставить ОС список поиска: если имя не имеет «достаточно» точек (число настраивается), тогда добавляется суффикс для повторного разрешения.

Библиотека, которую вы используете для выполнения HTTP-запроса.может не запрашивать у ОС разрешение имен и самостоятельно выполнять разрешение DNS.В этом случае он может работать только с информацией, которую вы ему предоставляете (но он также может повторно использовать ОС /etc/resolv.conf и информацию в ней), поэтому необходимо использовать полное имя.Напротив, psycopg2 может использовать механизм разрешения ОС и, следовательно, отлично справляется с «короткими» именами.

Обе библиотеки должны иметь документацию о том, как они обрабатывают имена хостов ... или иначе вам нужно изучитьих исходный код.Я предполагаю, что psycopg2 - это оболочка для стандартной библиотеки libpq по умолчанию, написанная на C, если я не ошибаюсь, которая, следовательно, наверняка использует стандартный процесс разрешения ОС.

Я могу понять любопытство, связанное с этой разницей, но в любом случае я советую сохранять короткие имена, когда вы вводите команды в оболочке и эквивалентные им (и даже там это может быть проблемой), но всегда использовать FQDN (полностью квалифицированные)Доменные имена) в вашей программе и файлах конфигурации.Вы избежите много проблем.

...