Alguns amigos desenvolvedores me reportaram nos últimos tempos sobre uma falha nas requisições que seus aplicativos fazem para domínios externos através do método AJAX (http://api.jquery.com/jquery.ajax/).

De modo geral, essa falha se torna complexa, num primeiro momento, pois em testes dentro da IDE o aplicativo funciona corretamente, permitindo-nos acessar informações externas oriundas de domínios externos (API’s desenvolvidas para esse fim) mas quando o aplicativo é testado no dispositivo móvel a requisição simplesmente não funciona.

Como ouvi muitos relatos, procurei entender melhor o que estava ocorrendo e, após algumas pesquisas e testes, consegui encontrar a causa e consequentemente a solução.

CAUSA DO PROBLEMA

A plataforma Intel XDK irá desativar o modo de BUILD ‘Legacy Hybrid’, que nada mais é do que um modo de gerar instaladores do projeto de modo mais ‘rústico’, baseado no antigo AppMobi. Para tornar a geração de instaladores mais íntegro, a IDE Intel XDK está migrando seu BUILD para o modo ‘Cordoba Hybrid’, que possui muito mais vantagens, sendo uma delas a possibilidade de diminuir drasticamente o tamanho do pacote de instalação do aplicativo para ser publicado nas lojas (Play Store, App Store, etc.).

Porém, esse modo também precisa obedecer algumas regras próprias de BUILD do framework Cordova, pois este preocupa-se de modo abrangente com a segurança do aplicativo. É exatamente neste ponto que nosso erro ocorre, pois precisamos habilitar uma regra no Cordova (dentro do Intel XDK) que irá permitir nosso aplicativo acessar dados de domínios externos.

DOMÍNIOS EXTERNOS

Como disse anteriormente, o Cordova possui uma regra de segurança na qual restringe o acesso do aplicativo a informações de domínios externos, chamada Whitelist Domains.

Para mais detalhes a cerca desta regra, recomendo o amigo leitor olhar a documentação oficial do Cordova (https://cordova.apache.org/docs/en/4.0.0/guide_appdev_whitelist_index.md.html), pois assim poderá compreender melhor como esta regra afeta nosso aplicativo no que diz respeito ao acesso a dados externos e causa o erro que estamos tratando neste artigo.

 SOLUÇÃO

Para nosso aplicativo funcionar corretamente e acessar dados de domínios externos, tudo que precisamos fazer é, com a ferramenta Intel XDK aberta e nosso projeto selecionado, ir até a “PROJECTS”, e logo em seguida ir na seção de configurações do Cordova em “CORDOVA HYBRID MOBILE APP SETTINGS”. Dentro desta, teremos a opção “BUILD SETTINGS”, no qual iremos encontrar a opção de habilitar os domínios na Whitelist Domains, através do campo “Domain List”.

Veja na figura abaixo exatamente onde se encontra esse campo na ferramenta Intel XDK:

whitelist-domain

Agora, neste campo, tudo que precisamos fazer é adicionar a URL que irá acessar ou colocar “*” pra permitir acesso irrestrito aos dados de qualquer domínio.