Configuração do Firefox para ativar o pedido Ajax entre domínios

Eu preciso permitir temporalmente XMLHttpRequest entre domínios. Alterar o cenário de segurança do Firefox parece ser o caminho a percorrer. Mas eu tentei com isso e isso, mas eles não funcionaram. Alguém já conseguiu configurar isso antes? Obrigado.

Para navegadores modernos, você pode tentar a seguinte abordagem:

https://developer.mozilla.org/en/HTTP_access_control

Em suma, você precisa adicionar o seguinte no header de resposta SERVER (o seguinte permite access de foo.example ):

 Access-Control-Allow-Origin: http://foo.example Access-Control-Allow-Methods: POST, GET, OPTIONS Access-Control-Allow-Headers: X-PINGOTHER Access-Control-Max-Age: 1728000 

Observe que o X-PINGOTHER é o header personalizado que é inserido pelo JavaScript e deve diferir de site para site.

Se você quiser que qualquer site acesse seu servidor no Ajax, use * .


Editar:

Quando eu respondi a pergunta pela primeira vez em 2009 , eu realmente atingi o mesmo problema, e eu trabalhei em torno dele usando a configuração do lado do servidor.

Não havia plug-in no FF ou no Chrome até então.

No entanto, agora temos alternativas usando o plugin do lado do navegador, por favor, verifique a resposta de tsds

Se você simplesmente não quer desperdiçar seu tempo em questões de domínio cruzado durante o desenvolvimento e teste do seu aplicativo, você pode usar o addon Force CORS for FF.

ATUALIZAÇÃO: Parece que esse addon não existe mais. Mas há outra opção: essa extensão do Chrome

Você já tentou usar o pedido ajax do jQuery? A partir da versão 1.3, o jQuery suporta certos tipos de solicitações ajax de domínio cruzado.

Citando a referência acima:

Nota: Todas as solicitações remotas (não no mesmo domínio) devem ser especificadas como GET quando ‘script’ ou ‘jsonp’ for o dataType (porque ele carrega o script usando uma tag de script DOM). Opções de Ajax que exigem um object XMLHttpRequest não estão disponíveis para essas solicitações. As funções completa e de sucesso são chamadas na conclusão, mas não recebem um object XHR; as funções beforeSend e dataFilter não são chamadas.

A partir do jQuery 1.2, você pode carregar dados JSON localizados em outro domínio se você especificar um retorno de chamada JSONP, que pode ser feito da seguinte forma: “myurl? Callback =?”. jQuery substitui automaticamente o? com o nome do método correto para chamar, chamando 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 do Ajax.

Aqui está a coisa, não há nenhuma maneira de “temporariamente” desativar XMLHttpRequest entre domínios, se você pode desativá-lo temporariamente, então ele pode ser desativado permanentemente. Esse é um problema bastante comum nos dias atuais da programação AJAX e é mais frequentemente resolvido usando a técnica conhecida como script entre domínios.

A idéia aqui é que, se você chamar um script de domínio cruzado, ele retornará resultados de JavaScript (JSON) que serão passados ​​para uma function do seu lado.

Aqui está um exemplo de código para ilustrar como ele pode parecer de uma perspectiva de código JavaScript:

  function request_some_data() { var s = "http://my.document.url.com/my_data?p1=v1&p2=v2&callback=myfunc"; try { try{ document.write(""); } catch(e){ var x = document.createElement("script"); x.src = s; document.getElementsByTagName("head")[0].appendChild(x); } } catch (e) { alert(e.message); } } 

Em seguida, você definirá uma function em seu código que recebe os dados e no servidor que “manipula” o caso de retorno de chamada, aqui está o JavaScript do lado do cliente:

 function myfunc(data) { alert(data); } 

E no lado do servidor, aqui estou dando um exemplo de PHP, mas isso pode ser feito com a mesma facilidade em Java ou qualquer que seja sua tecnologia de servidor:

  

Note que o que você está gerando no lado do servidor acaba sendo algum JavaScript que é executado no lado do cliente.

Eu tentei usar essa coisa ‘UniversalBrowswerRead’ também e não funcionou. Você pode adicionar um header “permitir”, mas ainda não tentei fazer isso. É bem novo.

Você pode encontrar mais informações aqui

Estou enfrentando isso do file:// . Gostaria de enviar consultas para dois servidores de um arquivo HTML local (um testbed).

Este caso em particular não deve ser uma preocupação de segurança, mas somente o Safari permite isso.

Aqui está a melhor discussão que encontrei sobre o problema.

Que tal usar algo como mod_proxy? Então, parece ao seu navegador que as solicitações estão indo para o mesmo servidor, mas elas estão realmente sendo encaminhadas para outro servidor.

Eu usei o Fiddler como proxy. O Fiddler redireciona as chamadas localhost para um servidor externo.

Eu configurei o Firefox para usar o proxy manual (porta 127.0.0.1 8888). O Fiddler captura as chamadas e as redireciona para outro servidor, usando filtros de URL.

Para permitir o domínio cruzado:

  1. insira about:config
  2. aceita ser cuidadoso
  3. digite security.fileuri.strict_origin_policy na barra de pesquisa
  4. mudar para falso

Agora você pode fechar a guia. Normalmente, agora você pode fazer uma solicitação de domínio cruzado com essa configuração.

Veja aqui para mais detalhes.

Você pode conferir meu add on para o firefox. Permite cruzar o domínio na versão mais recente do firefox: https://addons.mozilla.org/pt-BR/firefox/addon/cross-domain-cors/

Editar manualmente as configurações do firefox é o caminho a percorrer, mas é inconveniente quando você precisa fazer isso com frequência.

Em vez disso, você pode instalar um complemento que fará isso com um clique.

Eu uso CORS everywhere , o que funciona muito bem para mim.

Aqui está um link para o instalador