Подтвердить что ты не робот

Хозяин против DnsSafeHost

Мне нужно получить хост из объекта Request. Какую собственность я должен использовать и почему?

Из MSDN:

Свойство Uri.DnsSafeHost

A Строка, содержащая неограниченный хост-часть URI, которая подходит для разрешения DNS; или оригинал unescaped host string, если это уже подходящий для разрешения.

против

Свойство Uri.Host

Строка, содержащая имя хоста. Обычно это имя хоста DNS или IP-адрес сервера.

Мое тестирование было с ASP.NET Development Server. Оба они всегда возвращают localhost. Даже когда я помещаю 127.0.0.1, оба возвращают localhost.

При чтении свойство DnsSafeHost будет обрабатывать адреса IPv6, а также конвертировать Unicode в ASCII, если это необходимо. Он также может учитывать IRI и IDN. Несмотря на то, что в настоящее время меня не интересуют эти вещи, следует ли использовать свойство DnsSafeHost для безопасного использования?

4b9b3361

Ответ 1

Примените DnsSafeHost к URL-адресу, если вы намереваетесь отправить полученное имя узла на DNS-сервер самостоятельно. DNS был первоначально ASCII-единственным протоколом (и подмножеством ASCII в этом). Нынешний URL-адрес позволяет использовать последовательности символов в хост-части URL-адреса, которые не могут быть отправлены непосредственно на DNS-сервер. Примерами являются:

  • закрытые в виде приводов IPv6-адреса. DnsSafeHost снимает скобки.

  • Не-ASCII, неанглийские доменные имена. DnsSafeHost (необязательно) использует RFC 3987 IRI для нормализации символов и преобразует не-ASCII-символ в IDN, Punycode.

  • Кто знает, какие URL-адреса позволят в будущем? Приложение может пережить наши предположения о том, что хорошо в URL. DnsSafeHost добавляет к нему некоторую устойчивость.

Если вам нужно отобразить имя хоста для пользователя, используйте вместо этого свойство Host.