Я пытаюсь использовать.NET HttpListener в проекте C#. Когда я регистрирую свой префикс "http://*:8080/", это, кажется, не работает на URL HTTPS (т.е. не берет их). Когда я пробую следующий код для регистрации и HTTP и версий HTTPS префикса однако, я получаю ошибку:
"Не удалось послушать на префиксе 'https://:8080 /' потому что он конфликтует с существующей регистрацией на машине. "*
Как я могу получить свой префикс, работающий на обе HTTP & HTTPS?
private HttpListener _listener;
// Create prefixes
var prefixes = new List<string>();
prefixes.Add("http://*:8080/");
prefixes.Add("https://*:8080/");
// Create HttpListener
_listener = new HttpListener();
foreach (string prefix in prefixes)
{
_listener.Prefixes.Add(prefix);
}
_listener.Start(); // <== ERROR HERE
РЕДАКТИРОВАНИЕ 1 - Дополнительное разъяснение:
спасибо
ЦЕЛЬ: Попытайтесь найти способ, чтобы моя программа прослушивала как HTTP, так и HTTPS на одном и том же порте.
Вы не можете сделать это с помощью HTTPListener. Вам нужно будет использовать TCPListener и обрабатывать каждый ответ условно в зависимости от того, HTTP это или HTTPS.
Я почти уверен, что если вы используете один HTTPListener для HTTP 8080 и один для HTTPS 8443, вы сможете заставить свой браузер использовать yourproxy: 8080 для HTTP и yourproxy: 8443 для HTTPS. Firefox определенно позволяет вам это сделать.
По умолчанию https использует порт 443, а не 80. Вы должны указать другой порт для другого списка протоколов.
Это звучит нетривиально, но не невозможно. Вам нужно будет проверить, что посылает клиент, и решить, начинает ли он сеанс HTTP или HTTPS, основываясь на данных, которые он предоставляет.
edit: Подумав об этом немного больше, вы, вероятно, не хотите этого делать, учитывая, что вы пишете прокси. Вместо этого вам нужно будет обработать метод CONNECT (см. http://www.ietf.org/rfc/rfc2817.txt) и открыть туннельное соединение с целевым сервером.
Вы не обязаны использовать одну и ту же конфигурацию для всех протоколов.
Нажмите «Дополнительно» в настройках прокси, и там вы можете указать другие настройки прокси для других протоколов.