Compartilhar via


Middleware: middleware de redirecionamento de HTTPS gera exceção em portas HTTPS ambíguas

No ASP.NET Core 6.0, o Middleware de Redirecionamento HTTPS gera uma exceção de tipo InvalidOperationException quando encontra várias portas HTTPS na configuração do servidor. A mensagem da exceção contém o texto "Não é possível determinar a porta https de IServerAddressesFeature, vários valores foram encontrados. Defina a porta desejada explicitamente em HttpsRedirectionOptions.HttpsPort."

Para discussão, consulte o problema do GitHub dotnet/aspnetcore#29222.

Versão introduzida

ASP.NET Core 6.0

Comportamento antigo

Quando o Middleware de Redirecionamento HTTPS não está configurado explicitamente com uma porta, ele pesquisa IServerAddressesFeature durante a primeira solicitação para determinar a porta HTTPS para a qual ele deve redirecionar.

Se não houver portas HTTPS ou várias portas distintas, não está claro qual porta deve ser usada. O middleware registra um aviso e se desabilita. As solicitações HTTP são processadas normalmente.

Novo comportamento

Quando o Middleware de Redirecionamento HTTPS não está configurado explicitamente com uma porta, ele pesquisa IServerAddressesFeature durante a primeira solicitação para determinar a porta HTTPS para a qual ele deve redirecionar.

Se não houver portas HTTPS, o middleware ainda registrará um aviso e será desabilitado. As solicitações HTTP são processadas normalmente. Esse comportamento dá suporte a:

  • Cenários de desenvolvimento sem HTTPS.
  • Cenários hospedados nos quais o TLS é encerrado antes de chegar ao servidor.

Se houver várias portas distintas, não está claro qual porta deve ser usada. O middleware gera uma exceção e falha na solicitação HTTP.

Motivo da alteração

Essa alteração impede que dados potencialmente confidenciais sejam atendidos em conexões HTTP não criptografadas quando o HTTPS é conhecido por estar disponível.

Para habilitar o redirecionamento HTTPS quando o servidor tiver várias portas HTTPS distintas, você deve especificar uma porta na configuração. Para obter mais informações, consulte a configuração da porta.

Se você não precisar do Middleware de Redirecionamento HTTPS em seu aplicativo, remova UseHttpsRedirection do Startup.cs.

Se você precisar selecionar a porta HTTPS correta dinamicamente, forneça comentários sobre o problema do GitHub dotnet/aspnetcore#21291.

APIs afetadas

HttpsPolicyBuilderExtensions.UseHttpsRedirection