ASP.NET Core redirect http to https

前端 未结 6 1568
陌清茗
陌清茗 2021-01-01 17:11

I have created a redirect rules in my web.config to redirect my website from http to https. The issue i have is that every single link on the website is now https. I have a

相关标签:
6条回答
  • 2021-01-01 17:17

    In ASP.NET Core 2.1 just use this:

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            app.UseHsts();   // <-- Add this !!!!!
        }
    
        app.UseHttpsRedirection(); // <-- Add this !!!!!
        app.UseStaticFiles();
        app.UseCookiePolicy();
    
        app.UseMvc();
    }
    
    0 讨论(0)
  • 2021-01-01 17:18

    You will need to add also the following code in .net core 2.1

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            app.UseHsts();
        }
    
        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseCookiePolicy();
    
        app.UseMvc();
    }
    

    and the following part in service configuration

           services.AddHttpsRedirection(options =>
           {
            options.RedirectStatusCode = StatusCodes.Status307TemporaryRedirect;
            options.HttpsPort = 5001;
            });
    
    0 讨论(0)
  • 2021-01-01 17:21

    Edit: While it still works, things changed a bit since I wrote this answer. Please check D.L.MAN's more up to date answer: https://stackoverflow.com/a/56800707/844207

    In asp.net Core 2 you can use an URL Rewrite independent of the Web Server, by using app.UseRewriter in Startup.Configure, like this:

            if (env.IsDevelopment())
            {
                app.UseBrowserLink();
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
    
                // todo: replace with app.UseHsts(); once the feature will be stable
                app.UseRewriter(new RewriteOptions().AddRedirectToHttps(StatusCodes.Status301MovedPermanently, 443));
            }
    
    0 讨论(0)
  • 2021-01-01 17:33

    In ASP.NET Core 2.2 you should use Startup.cs settings for redirect http to https

    so add this in ConfigureServices:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddHttpsRedirection(options =>
        {
            options.HttpsPort = 443;
        });                           // ===== Add this =====
    }
    

    and add this in Configure :

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
            app.UseDatabaseErrorPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
            app.UseHsts();            // ===== Add this =====
        }
    
        app.UseHttpsRedirection();    // ===== Add this =====
    }
    

    then enjoy it.

    0 讨论(0)
  • 2021-01-01 17:38

    asp.net core < 2 just put this code into your startup.cs

            // IHostingEnvironment (stored in _env) is injected into the Startup class.
            if (!_hostingEnvironment.IsDevelopment())
            {
                services.Configure<MvcOptions>(options =>
                {
                    options.Filters.Add(new RequireHttpsAttribute());
                });
            }
    
    0 讨论(0)
  • 2021-01-01 17:42

    Actually (ASP.NET Core 1.1) there is a middleware named Rewrite that includes a rule for what you are trying to do.

    You can use it on Startup.cs like this:

    var options = new RewriteOptions()
        .AddRedirectToHttpsPermanent();
    
    app.UseRewriter(options);
    
    0 讨论(0)
提交回复
热议问题