Поскольку pnet core api не может прокси-запрос https - PullRequest
0 голосов
/ 17 февраля 2020

Я работаю над обратным прокси-сервером PO C, который построен как pnet core 3.1 API. Я ожидаю, что создам обратный прокси-сервер для пересылки точного запроса http / https / websocket к цели и возврата обратно к клиенту (в середине я проведу некоторое отслеживание и измерение пропускной способности) и ничего более.

Что у меня есть сделано: создание pnet ядра API с промежуточным программным обеспечением, вдохновленным этим проектом https://github.com/aspnet/AspLabs/tree/master/src/Proxy

Теперь, когда API работает на localhost: 5000, я могу протестировать прокси с помощью Postman и установите настройки прокси как это

enter image description here

Это работает хорошо с запросом http, что я могу получить результат, как обычно, но проблема приходит с запросом https ( например, https://www.google.com), Почтальон всегда возвращает «Не удалось получить ответ» без регистрации ошибок с консоли API.

enter image description here

После отладки я выяснил, что любой запрос https, проходящий через мой прокси, будет преобразован в запрос htttp на порту 443. Например, когда я запрашиваю https://www.google.com через мой прокси, я стану http://www.google.com: 443 , который содержится внутри conext.Request.Host .

Проблема возникает, когда я пытался скопировать ответ с целевого сервера в тело ответа контекста здесь

 using (var responseMessage = await context.SendProxyHttpRequest(requestMessage))
        {
                        await context.CopyProxyHttpResponse(responseMessage);
        }

https://github.com/aspnet/AspLabs/blob/aa729ed57cb2c3cf17449fb1083ea31a03b668fa/src/Proxy/src/ProxyExtensions.cs#L108, он немедленно прервется и вернет no ошибки.

Любой, кто имел такой же опыт, может поделиться со мной подсказкой, как это исправить. Я подозреваю, что мне понадобится специальный конфиг для Kestrel, чтобы заставить его работать

Любые мысли будут оценены по достоинству! Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...