31 março, 2015

Navegacao localhost com Project Spartan no Windows 10

Se você está usando o Preview do Windows 10 então provavelmente estava tão ansioso quanto eu para poder testar logo o Spartan, novo navegador de internet da Microsoft. Ontem (30/03/2015) foi liberado para o grupo FAST o update 10049, contendo a primeira versão pública do Spartan.

Como era de esperar de um desenvolvedor web, a primeira coisa que fui testar foi um site que está hospedado no IIS do meu computador. Para a minha surpresa, a página nao carregou de forma alguma, mesmo estando funcionando normalmente nos outros navegadores instalados no mesmo computador.

Como todo bom beta tester, a primeira coisa que fiz foi relatar este problema para a Microsoft, usando o aplicativo Windows Feedback do Windows 10, detalhando o que eu tentei fazer e inclusive adicionando prints de tela. Como no meu computador de trabalho eu não coloquei o Windows 10 ainda (achei melhor ter pelo menos 1 computador com Windows 8.1, "just in case..."), não tive como continuar testando e só pude voltar a "brincar" quando cheguei em casa.

Após fuçar um pouco eu me dei conta de uma coisa: O Spartan é um aplicativo Metro/Modern/Universal/Windows. Sendo assim ele está sujeito às mesmas restrições de qualquer aplicativo que façamos para a loja. Uma dessas limitações é que esses aplicativos, por padrão não têm permissão para fazer requesições web de loopback, ou seja, requisições para a própria máquina. Isso inclui localhost, "nome-do-computador", entradas no arquivo de hosts local, etc... Este recurso se chama AppContainer e é um mecanismo de segurança dos aplicativos da loja.

Como sou desenvolvedor web, uma ferramenta que uso bastante é o Fiddler, para monitorar e depurar tráfego http de projetos em que trabalho. Acontece que o Fiddler tem uma configuração que nos permite criar excessões de loopback para que aplicativos da loja possam realizar requisições locais.
Para realizar essa configuração basta acessar o menu Tools > Win8 Loopback Exemptions ou clicar na opção WinConfig da barra de ferramentas.

opção WinConfig na barra de ferramentas do Fiddler

Após isso será exibida a tela abaixo, contendo a lista de aplicativos da loja, onde você poderá informar quais estão isentos da restrição de loopback. Agora basta escolher o Project Spartan, salvar a configuração e usar o novo navegador com seu sites locais normalmente. Espero que nos proximos builds do Windows 10, ou pelo menos antes da versão final o Spartan já venha com essa exceção configurada por padrão.

PS.: Uma segunda opção para editar as regras de exceção é o aplicativo open source Windows 8 Loopback Exempltion Manager disponível no Codeplex: http://loopback.codeplex.com/. Se você quiser entender como funciona essa lista de exceção, dê uma olhada no código fonte desse aplicativo.