Я работаю над обратным прокси-сервером 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 и установите настройки прокси как это
Это работает хорошо с запросом http, что я могу получить результат, как обычно, но проблема приходит с запросом https ( например, https://www.google.com), Почтальон всегда возвращает «Не удалось получить ответ» без регистрации ошибок с консоли API.
После отладки я выяснил, что любой запрос 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, чтобы заставить его работать
Любые мысли будут оценены по достоинству! Спасибо!