Ola Roger.
Confere se as opçoes abaixo podem te ajudar:
Parece que o problema está relacionado com a sintaxe da requisição HTTP que você está enviando pelo Telnet.
A resposta 400 Bad Request geralmente ocorre quando o servidor recebe uma solicitação malformada.
No caso, isso pode ser causado pela forma como o cabeçalho da requisição está sendo enviado, ou até mesmo pela falta de certos cabeçalhos obrigatórios.
Aqui estão algumas considerações e ajustes que você pode tentar:
A requisição que você está tentando enviar via Telnet deveria ter a seguinte estrutura:
GET / HTTP/1.1
Host: localhost
No entanto, o Telnet não interpreta bem uma linha em branco entre o comando e o cabeçalho, então a forma correta de enviar isso no Telnet é a seguinte:
GET / HTTP/1.1
Host: localhost
Após essa linha, pressione Enter duas vezes para finalizar a requisição (isso é importante porque o HTTP exige uma linha em branco após os cabeçalhos para finalizar a solicitação).Ou seja após o localhost precisa de duas quebras de linha e faz isso pressionando enter duas vezes.
No seu exemplo, você fez a modificação para incluir o cabeçalho Host: localhost, o que é necessário no HTTP/1.1, pois ele exige que o cabeçalho Host esteja presente em todas as requisições. Sem isso, você pode receber o erro 400 Bad Request.
Quando a requisição for correta, o servidor deve retornar algo como:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: <algum número>
<html>
<head><title>Welcome</title></head>
<body><h1>Welcome to the server!</h1></body>
</html>
A resposta exata depende de como o seu servidor está configurado e do conteúdo que está sendo servido, mas se o servidor estiver funcionando corretamente, você deverá receber um código de status 200 OK.
Se você continuar recebendo a mensagem "Conexão ao host perdida", isso pode ser uma indicação de que o servidor está fechando a conexão inesperadamente.
Aqui estão algumas coisas a verificar:
- Verifique os logs do servidor: O que está sendo registrado no servidor quando você tenta se conectar? Isso pode dar mais informações sobre o que está acontecendo com a requisição.
- Teste com outra porta: Certifique-se de que a porta 8000 está realmente aberta e que o servidor está ouvindo nela. Se possível, tente rodar o servidor em outra porta para ver se o problema persiste.
- Verifique a configuração do servidor: Caso o servidor tenha algum tipo de middleware ou configuração que valida cabeçalhos ou outras partes da requisição, pode ser que o problema esteja relacionado a isso.
Se você está tentando acessar o servidor em uma máquina virtual, contêiner Docker ou outro ambiente isolado, certifique-se de que a comunicação de rede entre a máquina onde o Telnet está sendo executado e o servidor está configurada corretamente (e.g., as portas estão abertas e a rede está acessível).
Faça os testes ai e envie um feedback.
Bons estudos.