Estou trabalhando em duas aplicações web:
- App1 é um aplicativo escrito em ASP.NET e executado diretamente no Windows 10. Este aplicativo pode ser acessado via navegador em https://localhost:44311/
- App2 é escrito em Django e roda no Ubuntu-20.04 através do WSL2 no mesmo computador Windows. Este aplicativo pode ser acessado via navegador no endereço http://localhost:8000/
Estou tentando fazer uma chamada https do back-end do App2 para o back-end do App1. Desativando o firewall do Windows 10 e lendo outra pergunta me parece que a parte corretamente mas App1 retorna um erro. Tentei executar a seguinte instrução no shell do Ubuntu WSL:
curl -k https://DESKTOP-2MCFHIT.local:44311
Mas recebo o seguinte erro:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Bad Request</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Bad Request - Invalid Hostname</h2>
<hr><p>HTTP Error 400. The request hostname is invalid.</p>
</BODY></HTML>
Parece que o IIS Express não consegue lidar com a solicitação corretamente devido ao não uso de "localhost". Como posso resolver?
Tomando um palpite aqui, já que não uso o IIS Express, mas parece que, nesta pergunta SO, o padrão para o IIS Express é vincular
localhost
apenas.Como você precisa acessá-lo de outro "computador" (a instância WSL2 virtualizada), precisará dele para ouvir em todos os endereços. Na maioria dos softwares, isso seria feito vinculando-se a
0.0.0.0:port
, mas parece que a configuração adequada no IIS ( desta resposta a essa pergunta) é:Observe que também parece que você precisará executar como Admin, se ainda não estiver fazendo isso.