web-dev-qa-db-ja.com

ASP.NET Coreリダイレクトhttpからhttps

Web.configでリダイレクトルールを作成し、Webサイトをhttpからhttpsにリダイレクトしました。私が抱えている問題は、ウェブサイト上のすべてのリンクがhttpsになっていることです。 SSLを持たない他のWebサイトへのリンクがたくさんあるため、証明書エラーが発生します。これは私がやったことです:

  <rewrite>
  <rules>
    <rule name="HTTP/S to HTTPS Redirect" enabled="true" stopProcessing="true">
      <match url="(.*)" />
      <conditions logicalGrouping="MatchAny">
        <add input="{SERVER_PORT_SECURE}" pattern="^0$" />
      </conditions>
      <action type="Redirect" url="https://{HTTP_Host}/{R:1}" redirectType="Permanent" />
    </rule>
  </rules>
</rewrite>

Webサイト上のすべてのリンクではなく、ドメインのみでhttpsをリダイレクトするにはどうすればよいですか?

11
Huby03

実際(ASP.NET Core 1.1)には、 ミドルウェア というRewriteという名前のRewriteがあり、これには実行しようとしていることのルールが含まれています。

Startup.csで次のように使用できます。

var options = new RewriteOptions()
    .AddRedirectToHttpsPermanent();

app.UseRewriter(options);
11
Sergio López

Asp.net Core 2では、Startup.Configureでapp.UseRewriterを次のように使用することにより、Webサーバーとは無関係にURL書き換えを使用できます。

        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));
        }
11
victorvartan

ASP.NET Core 2.2では、httpをhttpsにリダイレクトするためのStartup.cs設定を使用する必要があります

これをConfigureServicesに追加します:

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

そして、これを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 =====
}

それを楽しんでください。

5
D.L.MAN

asp.net core <2は、このコードをstartup.csに入れるだけです

        // IHostingEnvironment (stored in _env) is injected into the Startup class.
        if (!_hostingEnvironment.IsDevelopment())
        {
            services.Configure<MvcOptions>(options =>
            {
                options.Filters.Add(new RequireHttpsAttribute());
            });
        }

.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();
}

およびサービス構成の次の部分

       services.AddHttpsRedirection(options =>
       {
        options.RedirectStatusCode = StatusCodes.Status307TemporaryRedirect;
        options.HttpsPort = 5001;
        });
3
Nico

ドメインに別の条件を追加することもできますが、

<add input="{HTTP_Host}" negate="true" pattern="localhost" />

「localhost」をドメイン名に置き換えます。

<rewrite>
  <rules>
    <rule name="HTTP/S to HTTPS Redirect" enabled="true" stopProcessing="true">
      <match url="(.*)" />
      <conditions logicalGrouping="MatchAny">
        <add input="{SERVER_PORT_SECURE}" pattern="^0$" />
        <add input="{HTTP_Host}" negate="true" pattern="yourdaomainname" />
      </conditions>
      <action type="Redirect" url="https://{HTTP_Host}/{R:1}" redirectType="Permanent" />
    </rule>
  </rules>
</rewrite>

詳細については、

https://www.softfluent.com/blog/dev/2016/12/27/Page-redirection-and-URL-Rewriting-with-ASP-NET-Core

お役に立てれば!

1
Anoop H.N

ASP.NET Core 2.1では、これを使用するだけです:

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();
}
1
Dzianis Yafimau