Запрос HTTP - обход DNS [.Net]

Можно ли (и если да, то как) обойти DNS при выполнении HTTP-запроса?

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

Я попытался использовать WebRequest, заменив URL-адрес на IP и установив заголовок Host, но этот заголовок защищен.

Как я могу это сделать ? Нужно ли мне самому создавать HTTP-запрос?

Примечание: редактирование файла хоста не является вариантом

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
8
0
3 769
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

В то время, когда был задан этот вопрос, это было невозможно сделать с классом WebRequest. Однако после проблемы Microsoft Connect, возникшей в результате этого вопроса, Microsoft добавила свойство Host в класс HttpWebRequest в .Net версии 4.0. Таким образом, если вы используете .net 4.0 или более позднюю версию, вы можете добиться желаемого с помощью этого кода.

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://127.0.0.1");
Request.Host = "www.example.com"

До версии 4 .Net единственный реальный вариант - открыть Socket и выполнить HTTP-запрос самостоятельно или найти сторонний компонент, который имеет больше функций.

У меня была аналогичная проблема, но мне удалось обойти ее с помощью сокетов (как упоминал Мартин Браун. Вот мой ответ: https://stackoverflow.com/questions/359041/request-web-page-in-c-spoofing-the-host#359299

Однако в моем случае мне нужна аутентификация Kerberos, и мне понадобится перенаправление 302. На самом деле не чувствуется перекодирование всего этого :)

Nico 11.12.2008 16:47
Ответ принят как подходящий

Мне удается сделать то, что мне нужно, установив прокси на IP-адрес удаленного сервера:

request.Proxy = new WebProxy(ip.ToString());

Это работает не во всех сценариях, но сработало в моем случае.

Вы можете использовать мое решение этой проблемы, оно размещено здесь:

Как установить собственный заголовок "Host" в HttpWebRequest?

Это может помочь вам отредактировать заголовок хоста и избежать использования прокси-сервера.

Другие вопросы по теме