Как принудительно перенаправить https на статические файлы в ASP.NET Core 2.1? - PullRequest
0 голосов
/ 29 июня 2018

У меня есть приложение ASP.NET Core, в котором включено перенаправление HTTPS. Проблема в том, что перенаправление HTTPS не работает со статическими файлами, поэтому внешний интерфейс находится в другом порту, чем внутренний, когда я захожу на сайт с http, и это заставляет CORS блокировать все запросы, сделанные к внутреннему , Я пытался разрешить CORS для всех запросов (для тестирования, конечно), но, что бы я ни делал, запросы не выполнялись Работало только посещение внешнего интерфейса с https. Как принудительно перенаправить https на статические файлы с ASP.NET Core?

Ответы [ 2 ]

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

Это сработало для меня.

app.UseStaticFiles(new StaticFileOptions()
{
    OnPrepareResponse = (context) =>
    {
        var request = context.Context.Request;
        var response = context.Context.Response;
        UrlRewriteUtils.RedirectIfHttp(request, response);
    }
});

А вот и полезный метод.

public class UrlRewriteUtils 
{
       public static void RedirectIfHttp(HttpRequest request, HttpResponse response)
       {
            string reqProtocol;
            if (request.Headers.ContainsKey("X-Forwarded-Proto"))
                reqProtocol = request.Headers["X-Forwarded-Proto"][0];
            else if (request.IsLocal())
                reqProtocol = "https";
            else
                reqProtocol = request.IsHttps ? "https" : "http";

            if (reqProtocol.ToLower() != "https")
            {
                var newUrl = new StringBuilder()
                    .Append("https://").Append(request.Host)
                    .Append(request.PathBase).Append(request.Path)
                    .Append(request.QueryString);
                response.Redirect(newUrl.ToString(), true);
            }
        }
    }
0 голосов
/ 24 июля 2018

Исходя из моего опыта, вы должны добавить этот код в файл startup.cs

   public void ConfigureServices(IServiceCollection services)
        {

            services.AddHttpsRedirection(options =>
            {
                options.HttpsPort = 443;
            });

Вы должны любить документацию Microsoft . 6 пунктов ниже неполного примера, в котором они рассказывают вам об этом требовании:

Если порт не установлен:

  • Запросы не перенаправляются.

Вы можете установить порт, используя следующие методы:

Порт можно настроить, установив:

  • Переменная среды ASPNETCORE_HTTPS_PORT.
  • http_port ключ конфигурации хоста (например, через hostsettings.json или команду
  • строковый аргумент).
    • HttpsRedirectionOptions.HttpsPort. См. Предыдущий
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...