Condividi tramite


Middleware: il middleware di reindirizzamento HTTPS genera un'eccezione sulle porte HTTPS ambigue

In ASP.NET Core 6.0, il middleware di reindirizzamento HTTPS genera un'eccezione di tipo InvalidOperationException quando trova più porte HTTPS nella configurazione del server. Il messaggio dell'eccezione contiene il testo "Impossibile determinare la porta https da IServerAddressesFeature, sono stati trovati più valori. Impostare la porta desiderata in modo esplicito su HttpsRedirectionOptions.HttpsPort".

Per la discussione, consultare il problema di GitHub dotnet/aspnetcore#29222.

Versione di introduzione

ASP.NET Core 6.0

Comportamento precedente

Quando il middleware di reindirizzamento HTTPS non è configurato in modo esplicito con una porta, cerca IServerAddressesFeature durante la prima richiesta per determinare la porta HTTPS a cui deve essere reindirizzato.

Se non sono presenti porte HTTPS o più porte distinte, non è chiaro quale porta deve essere usata. Il middleware registra un avviso e si disabilita. Le richieste HTTP vengono elaborate normalmente.

Nuovo comportamento

Quando il middleware di reindirizzamento HTTPS non è configurato in modo esplicito con una porta, cerca IServerAddressesFeature durante la prima richiesta per determinare la porta HTTPS a cui deve essere reindirizzato.

Se non sono presenti porte HTTPS, il middleware registra comunque un avviso e si disabilita. Le richieste HTTP vengono elaborate normalmente. Questo comportamento supporta:

  • Scenari di sviluppo senza HTTPS.
  • Scenari ospitati in cui TLS viene terminato prima di raggiungere il server.

Se non sono presenti più porte distinte, non è chiaro quale porta deve essere usata. Il middleware genera un'eccezione e non riesce la richiesta HTTP.

Motivo della modifica

Questa modifica impedisce la gestione di dati potenzialmente sensibili su connessioni HTTP non crittografate quando si sa che HTTPS è disponibile.

Per abilitare il reindirizzamento HTTPS quando il server dispone di più porte HTTPS distinte, è necessario specificare una porta nella configurazione. Per ulteriori informazioni, vedere Configurazione porta.

Se non è necessario il middleware di reindirizzamento HTTPS nell'app, rimuovere UseHttpsRedirection da Startup.cs.

Se è necessario selezionare la porta HTTPS corretta in modo dinamico, inviare commenti e suggerimenti nel problema di GitHub dotnet/aspnetcore#21291.

API interessate

HttpsPolicyBuilderExtensions.UseHttpsRedirection