Overview
Ao criar um script em ECMAScript (JavaScript, JScript) que acessa um serviço externo ou acessa qualquer recurso externo, não funciona. Em algumas situação aparece erro de acesso a conteúdo cross domain e outras vezes apenas não faz nada.
Mas o que é acesso cross domain? É qualquer acesso que fizermos a um recurso que não está no mesmo domínio que o site atual. Por exemplo: no portal corporativo da minha empresa obter dados de um site externo (site da internet) via JQuery ou conectar a um serviço disponibilizado no Azure. Esse tipo de comportamento é considerado um acesso cross domain.
Solução
Esse problema acontece por causa das configurações atuais do navegador de internet, conforme a zona de segurança que o site estiver sendo executado permitirá funcionar ou não. Nas zonas Internet e Sites Confiáveis não é possível fazer acesso cross domain. Se o site estiver na zona Intranet Local, irá funcionar, a imagem 01 ilustra as zonas. Esta tela está disponível através do menu opções de internet do Internet Explorer.
Imagem 01: Configurações das zonas de segurança
No meu caso estava sendo executado scripts JQuery no SharePoint, e por padrão sempre colocamos os sites SharePoint como sites confiáveis. Como a zona sites confiáveis não permite o acesso cross domain, tive que alterar as configurações do meu navegador.
Para alterar essa configuração, seguir os passos abaixo:
- Selecionar a zona de segurança e clicar no botão nível personalizado (ou custom level…), a imagem 01 mostra essa interface;
- Nas configurações de segurança da zona, procurar a opção “Access data sources across domains” e colocá-la como enable, conforme a imagem 02;
- Acessar o site e ver o script funcionando
Imagem 02: Liberando o acesso cross domain de script
Importante: cuidado ao liberar certas configurações no seu navegador de internet, elas podem ter implicações de segurança. A configuração feita neste irá liberar acesso a recursos de outros domínios, evite fazer na zona de internet. Se for fazer faça na zona de sites confiáveis, que é melhor controlado pelo usuário ou administradores de rede.
Existe outra forma de fazer acesso a scripts cross domin utilizando JSONP, assim não precisamos alterar as configurações do navegador.