Liberar acesso externo no PHP para AJAX (crossdomain)

Estou num projeto onde utilizo o PHP para gerar alguns JSON e HTMLs que devem ser acessados de outro domínio.

Como eu queria acessar por AJAX usando o jQuery, eu precisava liberar o acesso externo com PHP. Afinal um domínio não consegue acessar outro por AJAX sem ter uma liberação.

Achei que a liberação seria muito difícil. Que eu precisaria habilitar por htaccess ou alguma coisa assim.

Mas é muito fácil!

Basta você utilizar o header do php, conforme o exemplo abaixo

Neste exemplo, libero o acesso somente para um domínio específico:

header('Access-Control-Allow-Origin: http://dominio.com.br');

 

Neste exemplo, libero o acesso para qualquer domínio

header('Access-Control-Allow-Origin: *');

 

E pronto! Basta acessar a url usando o método $.ajax, $.load, $.get do jQuery ou carregar o ajax da maneira que precisar.

 

Caso você queira utilizar em ASP.NET ou qualquer outra linguagem, este site deve lhe ajudar http://enable-cors.org/

Se você tiver uma maneira mais fácil(duvido) comenta ae. Se não der certo, comenta aí também que a gente tenta ajudar!

2 ideias sobre “Liberar acesso externo no PHP para AJAX (crossdomain)

  1. Bom artigo.

    Na realidade um ajax pode acessar/receber dados de outro dominio e sem necessitar de liberação, mas isso depende da técnica utilizada. No caso o XHR possui restrições impostas pelos navegadores para trocar informações entre dominios diferentes, então basta enviar o cabeçalho de permissão.

    Existem varias técnicas de transmissão de dados, entre elas:
    XHR
    XHR Multiparte
    Comet
    Inserção dinâmica de tag script
    iframes

    No caso o mais comum é o XHR, porém por questões de segurança os navegadores impoem restrições.

    Se usarmos "Inserção dinâmica da tag script" podemos solicitar dados de um servidor em um dominio diferente. Essa técnica é usada para fazer "Json com Padding" ou simplesmente JsonP.

    Usando JsonP não existe a necessidade de liberação de dominio (cabeçalho).

    Nem sempre temos acesso ao site de outro dominio para adicionar Headers, então usamos JsonP.
    Vale lembrar que segurança é importante e cuidados devem ser tomados ao usar essa técnica, principalmente porquê estaremos confiando em informações de outro dominio que serão lidas até mesmo executadas em nosso site, uma vez que, JsonP pode ser executado de modo nativo.

    Também destaco que usar "Inserção dinâmica" é um hack, ele não tem barreiras de dominios mas não é tão robusto quanto XHR, não podemos enviar cabeçalhos com a solicitação, parâmetros podem apenas ser passados via GET, não podemos definir limites de tempo nem saber o status da solicitação.

    Por fim, a "inserção dinâmica" é apenas uma alternativa ao problema quando não se possui o controle das paginas em outro dominio para adicionarmos cabeçalhos de permissão.

    Então, se existe a possibilidade de passar o cabeçalho, passe-o e use XHR, mais robusto, mais seguro.

    Booa Leo.

Deixe um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>