Pergunta

Como você contorna esse problema de script entre sites do Ajax no FireFox 3?

Foi útil?

Solução

Se você estiver usando jQuery, ele possui uma função de retorno de chamada para superar isso:

http://docs.jquery.com/Ajax/jQuery.ajax#options

A partir do jQuery 1.2, você pode carregar dados JSON localizados em outro domínio se especificar um retorno de chamada JSONP, que pode ser feito assim:"meuurl?callback=?".jQuery substitui automaticamente o ?Com o nome do método correto para chamar, chamando o seu retorno de chamada especificado.Ou, se você definir o tipo de dados como "jsonp", um retorno de chamada será adicionado automaticamente à sua solicitação AJAX.

Alternativamente, você pode fazer sua solicitação ajax para um script do lado do servidor que faz a chamada entre domínios para você e depois passa os dados de volta para o seu script

Outras dicas

Para atualizar a resposta (acho que principalmente para meu benefício quando eu procurar essa resposta mais tarde), se estiver carregando XML ou qualquer outra coisa, você sempre pode perguntar ao usuário se ele nos permitirá ler de outro site com este código :

try {
    if (netscape.security.PrivilegeManager.enablePrivilege)
        netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
} catch (e) { 
    alert("Sorry, browser security settings won't let this program run."); 
    return; 
}

(do livro de serviços da web RESTful) Mas isso só funciona no Firefox, quando o arquivo html é carregado do arquivo local.Então, não é tão útil.

Mais uma solução:se tudo que você precisa são os cabeçalhos, você pode especificar "HEAD" como o método e isso não causará o problema de segurança.Por exemplo, se você quiser apenas saber se a página da web existe.

var client = new XMLHttpRequest();
client.open("HEAD", my_url, false);
client.send(null);
if(client.readyState != 4 || client.status != 200) //if we failed
    alert("can't open web page");

Mais alguns detalhes seriam legais:qual biblioteca AJAX você está usando, o que você gostaria de obter, como você faz isso.

Por exemplo, pode ser uma solicitação Ajax entre domínios, o que não é permitido.Neste caso use JSON.

Me deparei com esse problema recentemente e foi enquanto eu carregava a solicitação local como AJAX, e não um problema de script entre sites.Além disso, o próprio Jimmy parece ter o mesmo problema.Este parece ser o problema de segurança do FF, este artigo descreve o causa e solução para acesso a uri restrito negado" código:"1012 problema.

Desculpe, obteve esse erro usando o jQuery $ .AJAX no Firefox 3.Tentei a sugestão do JSONP, mas acho que isso só funcionará com algo que servirá a JSON.Estou tentando criar uma amostra de mashup baseado em arquivos HTML local que extrairá dados do Yahoo! Finance, mas eles estão servindo .csv, então acho que sou sol.– Jimmy Chandra (9 de setembro às 17h20)

Espero que você ache útil.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top