Páginas

terça-feira, 22 de novembro de 2016

.NET Core versus Chrome 54 - Invalid request line

Com o recente lançamento de uma nova versão do .NET Core, a 1.1 (https://blogs.msdn.microsoft.com/dotnet/2016/11/16/announcing-net-core-1-1/), fui correndo atualizar um projeto que estou trabalhando para poder experimentar as novas funcionalidades.

Este é um projeto que expõe várias API (WebAPI), e por isso eu uso a ferramenta Postman (https://www.getpostman.com/), dentro do Chrome, para simular as requisições.

Entretanto, ao atualizar o projeto e suas respectivas bibliotecas e colocá-lo para rodar, ao acessá-lo tanto pelo Chrome (ele tem uma página inicial, não é só API) quanto pelo Postman, o erro abaixo começou a aparecer.

info: Microsoft.AspNetCore.Server.Kestrel[17] Connection id "0HL0J500CHGCA" bad request data: "Invalid request line: <0x16><0x03><0x01><0x00><0xB9><0x01><0x00><0x00><0xB5><0x03><0x03><0xD0><0x95>yq6<0x92><0xCA>6v<0xA9><0x0A>" Microsoft.AspNetCore.Server.Kestrel.BadHttpRequestException: Invalid request line: <0x16><0x03><0x01><0x00><0xB9><0x01><0x00><0x00><0xB5><0x03><0x03><0xD0><0x95>yq6<0x92><0xCA>6v<0xA9><0x0A>

Muito frustrante. Tentei até voltar a versão do .NET Core para 1.0. As chamadas continuaram dando erro, só que desta vez a mensagem era diferente.

Microsoft.AspNetCore.Server.Kestrel: Information: Connection id "0HL0J555RROF" bad request data: "Malformed request: MethodIncomplete"
Microsoft.AspNetCore.Server.Kestrel.BadHttpRequestException: Malformed request: MethodIncomplete

No Chrome, a mensagem era ERR_SSL_PROTOCOL_ERROR. Achei estranho pois a URL que eu acesso é http://localhost:5000/, sem SSL. Ao monitorar a chamada pelas ferramentas de desenvolvimento do Chrome, percebi que estava sendo retornado um código 307, pedindo para que a requisição fosse redirecionada para usar HTTPS.

Ferramenta de monitoração de rede do Chrome mostrando requisição 307 mandando o browser ir para url com https


Perdi boa parte do meu final de noite procurando uma forma de resolver, e acabei desistindo. Hoje, encontrei um bug aberto no Github do projeto do Kestrel: https://github.com/aspnet/KestrelHttpServer/issues/1217

Era exatamente o mesmo problema que eu tive! Em resumo, o problema é com a última versão do Chrome, a 54, pois eu conseguia trabalhar com a versão 53 sem problemas neste projeto com o .NET Core 1.0.

A solução para o problema é simples: ao invés de utilizar o endereço no localhost, se eu fizer a chamada apontando para o IP 127.0.0.1, tudo funciona normalmente!

Com isso, pude voltar a trabalhar tranquilo no projeto e fazer os testes. Quem estiver com esse mesmo sintoma, sugiro tentar mudar o endereço.

Obs. No mesmo bug no Github, é sugerido remover a entrada "localhost" das configurações do Chrome em "chrome://net-internals/#hsts", mas como trocar o endereço já funcionou para mim, eu nem fui atrás disso.

Abraços!

Nenhum comentário:

Postar um comentário