Схема запроса отмены с OWIN Katana - PullRequest
0 голосов
/ 03 сентября 2018

Мы планируем развернуть наше приложение MVC в сине-зеленой настройке за HAProxy-сервером и настраиваем его так, чтобы SSL-соединение заканчивалось на прокси-сервере, а связь между прокси-сервером и веб-сервером осуществлялась через http и используя внутреннее имя хоста.

Проблема этого подхода заключается в том, что иногда нашему приложению необходимо генерировать абсолютные URL-адреса (например, при отправке электронных писем), а генерируемые URL-адреса http://internal.site.com вместо https://public.site.com.

Прокси-сервер добавляет головки X-Forwarded-Proto и X-Forwarded-Host с оригинальной схемой и именем хоста, поэтому мы хотим, чтобы наше приложение использовало их для создания абсолютных URL-адресов.

Существуют промежуточные решения для этого, если вы используете .Net Core, и мы использовали их, чтобы попытаться сделать это сами (несмотря на то, что в .Net Standard они не работали напрямую с нашим проектом). У нас это работает для замены хоста, но по какой-то причине он не заменяет схему, когда мы делаем это (упрощено для краткости):

app.Use((ctx, next) =>
                    {
                        //this works
                        ctx.Request.Host = HostString.FromUriComponent("public.mysite.com"); 
                        //this does nothing
                        ctx.Request.Scheme = "https"; 
                        return next();
                    });

Это выдает http://public.site.com при выводе абсолютных URL.

Кто-нибудь знает, почему не работает переопределение схемы или как я могу делать то, что пытаюсь сделать?

...