Como fazer requisição cross-domain com jquery

4 respostas
K

Quando faço a requisição ela vem em branco.
o chrome retorna esse mensagem "[color=red]is not allowed by Access-Control-Allow-Origin.[/color]"

this.requestHTML = function(data, setting){
       
       var html = '';
        $.ajax({
            url: "http://www.outrodomino.com.br"
            type:'post',
            data: generateObjectFormData(setting, data),
            async: false,
            success:function(data){
                html = data;
            }
        });
        return html;
    }

4 Respostas

D

Vc pode resolver isso de duas maneiras.

[color=green]1 - Usando JSONP[/color]

Cliente:$.ajax({ url: "http://www.outrodomino.com.br" type: "post", data: generateObjectFormData(setting, data), cache: false, async: false, dataType: "jsonp", jsonpCallback: "resultado", success: function( data, textStatus, jqXHR ) { html = data; } });
Servidor:
Você precisa escrever os dados na saída assim, como se fosse uma chamada de uma função chamada “resultado” (o mesmo nome de jsonpCallback) que recebe uma string como parâmetro:

[color=blue]2 - Ativando o[/color] CORS (Cross-Origin Resource Sharing)
Fazendo assim, você mantém a forma que está fazendo (usando uma requisição normal).

Um último detalhe. Cuidado com a opção async. Ela está depreciada na versão 1.8 da jQuery (lançada ontem). Processe os dados que você quer dentro do callback. Veja o que diz a documentação:

K

no caso, se eu não tiver acesso a servidor eu não posso fazer a requisição?

D

Infelizmente da forma que você está tentando não pode. Qual seria o endereço? O que você quer pegar?

N

Por causa da Same Origin Policy
você nao poderá fazer esse tipo de requisição. Existem maneiras de se fazer, mas você deverá ter acesso ao
servidor externo. Procure sobre easyXDM e xdomainajax, isto pode te ajudar também.

Criado 10 de agosto de 2012
Ultima resposta 22 de ago. de 2012
Respostas 4
Participantes 3