Sdílet prostřednictvím


Middleware: Middleware přesměrování HTTPS vyvolává výjimku na nejednoznačných portech HTTPS

V ASP.NET Core 6.0 vyvolá middleware přesměrování HTTPS výjimku typu InvalidOperationException , když v konfiguraci serveru najde více portů HTTPS. Zpráva výjimky obsahuje text "Nelze určit port https z IServerAddressesFeature, bylo nalezeno více hodnot. Nastavte požadovaný port explicitně na httpsRedirectionOptions.HttpsPort."

Diskuzi najdete v tématu o problému GitHubu dotnet/aspnetcore#29222.

Zavedená verze

ASP.NET Core 6.0

Staré chování

Pokud middleware přesměrování HTTPS není explicitně nakonfigurovaný s portem, vyhledá IServerAddressesFeature se během prvního požadavku a určí port HTTPS, do kterého se má přesměrovat.

Pokud neexistují žádné porty HTTPS nebo více různých portů, není jasné, který port by se měl použít. Middleware zaznamená upozornění a zakáže ho. Požadavky HTTP se zpracovávají normálně.

Nové chování

Pokud middleware přesměrování HTTPS není explicitně nakonfigurovaný s portem, vyhledá IServerAddressesFeature se během prvního požadavku a určí port HTTPS, do kterého se má přesměrovat.

Pokud nejsou žádné porty HTTPS, middleware stále zaznamená upozornění a zakáže se. Požadavky HTTP se zpracovávají normálně. Toto chování podporuje:

  • Vývojové scénáře bez PROTOKOLU HTTPS
  • Hostované scénáře, ve kterých se protokol TLS ukončí před dosažením serveru.

Pokud existuje více různých portů, není jasné, který port by se měl použít. Middleware vyvolá výjimku a požadavek HTTP selže.

Důvod změny

Tato změna zabraňuje tomu, aby se potenciálně citlivá data obsluhovala přes nešifrovaná připojení HTTP, pokud je známo, že je k dispozici protokol HTTPS.

Pokud chcete povolit přesměrování HTTPS, pokud má server více různých portů HTTPS, musíte v konfiguraci zadat jeden port. Další informace najdete v tématu Konfigurace portu.

Pokud v aplikaci nepotřebujete middleware přesměrování HTTPS, odeberte UseHttpsRedirection ho z Startup.cs.

Pokud potřebujete dynamicky vybrat správný port HTTPS, poskytněte nám zpětnou vazbu v problému s GitHubem dotnet/aspnetcore#21291.

Ovlivněná rozhraní API

HttpsPolicyBuilderExtensions.UseHttpsRedirection