Erro ao Acessar Serviços Cross Domain com ECMAScript

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 Winking smile

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.

Anúncios

Uma resposta to “Erro ao Acessar Serviços Cross Domain com ECMAScript”

  1. SharePoint e Windows Azure: Integração Utilizando JavaScript « Fabian André Gehrke Says:

    […] no seu navegador de internet a chamada ao serviço no Windows Azure pode ser bloqueada. O artigo Erro ao Acessar Serviços Cross Domain com ECMAScript explica uma forma de resolver o […]


Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: