URL HTTPS, когда SSL завершен на балансировщике нагрузки - PullRequest
0 голосов
/ 28 августа 2018

Мне нужно, чтобы приложение ASP.NET Core возвращало https URL-адреса, когда я возвращаю CreatedAtActionResult или получаю текущий URL-адрес запроса, используя UriHelper.GetDisplayUrl(Request) от моего контроллера API. Я не хочу, чтобы мой сервис обрабатывал трафик https, поэтому использование перенаправления https нежелательно. В идеале любой процесс, который генерирует url / uri, должен иметь возможность переопределить схему на https://.

Фон

У меня есть служба, работающая в Docker на AWS Fargate, которая находится за балансировщиком нагрузки, который завершает трафик SSL и пересылает запросы в виде HTTP на мой Asp.Net Core API. В этом API есть действия, которые возвращают CreatedAtActionResult, который формирует URL, указанный в ответе заголовка Location. К сожалению, эти URL-адреса http://, а не https://, потому что мой сервис не знает, что он должен вернуть https://.

1 Ответ

0 голосов
/ 28 августа 2018

Мне удалось решить эту проблему, написав специальное промежуточное программное обеспечение, которое использует значение конфигурации для определения среды, в которой я работаю, и выборочное изменение входящего запроса. Надеюсь, что это поможет следующему человеку, который столкнулся с этой проблемой!

app.Use(async (context, next) =>
{
    // Rewrite the inbound Request when running remotely (where this key isn't set)
    if (Configuration["RunningEnvironment"] == null)
    {
        context.Request.IsHttps = true;
        context.Request.Scheme = "https";
    }

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