Com o crescente aumento de aplicações AIR e Flex, integração entre servidores e a utilização crescente de WEBservice, se torna importante conhecer um pouco do crossdomain. O Crossdomain é um arquivo XML com as permissões de acesso ao servidor, podendo impedir ou liberar que aplicações Flash se comuniquem com o servidor.
Para que sua aplicação consiga acessar dados de outro domínio, é necessário um arquivo chamado crossdomain.xml, que deve residir na raiz do servidor (ou outro diretório, com ajuda de Actionscript para mostrar o caminho) e é automaticamente procurado pelo Flash Player assim que uma requisição for feita àquele servidor.
Vamos ao básico!
O arquivo crossdomain.xml deve conter uma única tag (tag pai) chamada <cross-domain-policy> e dentro dela uma ou mais tags <allow-access-from> (tag filho), informando os domínios permitidos.
Para especificar os domínios permitidos nas tags <allow-access-from>, é possível utilizar:
- uma simples URL;
- um endereço IP;
- ou um * seguido de partes do domínio para abranger um range maior de possibilidades;
Ficou complicado? Veja o exemplo:
<cross-domain-policy> <!?aceitar acesso do domínio www.mxml.com.br--> <allow-access-from domain="www.mxml.com.br" /> <!?aceitar acesso do domínio mxml.com.br e qualquer subdomínio --> <allow-access-from domain="*.mxml.com.br " /> <!?aceitar acesso somente do IP informado --> <allow-access-from domain="127.0.0.1" /> <!?liberado para qualquer domínio (Cuidado) --> <allow-access-from domain="*" /> </cross-domain-policy>
Para cada domino que você deseja liberar o acesso, deve-se inserir uma tag <allow-access-from> e especificar o domínio.
Caso você deseje liberar o acesso para qualquer domínio, basta inserir apenas uma tag <allow-access-from> com o atributo domain=?*?.
Veja meu caso. Possuo um crossdomain em /crossdomain.xml, e o mesmo possui a seguinte estrutura:
<?xml version="1.0"?> <cross-domain-policy> <allow-access-from domain="*" /> </cross-domain-policy>
No meu caso liberei para qualquer servidor acessar, por ser um server de compartilhamento de informação, e com isso qualquer dado existente neste servidor, poderá ser utilizado por qualquer pessoa que queira testar seus aplicativos, ou mesmo os testes que passo aqui.
E para acessar dados em um servidor HTTPS de um servidor HTTP, basta adicionar um novo atributo na tag <allow-access-from> chamado secure=?false? e definir seu valor como false. O valor default dele é true. Exemplo:
<?xml version="1.0"?> <cross-domain-policy> <allow-access-from domain="*" secure="false" /> </cross-domain-policy>
Baseado de Cross-Domain Policy