Pergunta
Eu gostaria de fazer uma chamada de Ajax para um servidor diferente (o mesmo domínio e caixa, apenas uma porta diferente.) Por exemplo,
Minha página é
http://localhost/index.html
Eu gostaria de fazer uma solicitação get ajax para:
http://localhost:7076/?word=foo
Estou recebendo este erro:
Access to restricted URI denied (NS_ERROR_DOM_BAD_URI)
Eu sei que você não pode fazer uma solicitação ajax para um domínio diferente, mas parece que isso também inclui portas diferentes?há alguma solução alternativa?
Solução
Tenha uma determinada página em suas solicitações de proxy do servidor da porta 80 para a outra porta.Por exemplo:
http://localhost/proxy?port=7076&url=%2f%3fword%3dfoo
Observe a codificação do URL no último valor do argumento da string de consulta.
Outras dicas
Você poderia usar JSONP.É aqui que você especifica um retorno de chamada com a solicitação, a resposta da sua solicitação ajax é agrupada com o nome da função de retorno de chamada.Em vez de usar XmlHttpRequest, você insere uma tag no documento HTML com o URL.Então, quando a resposta é recuperada, a função de retorno de chamada é chamada, passando os dados como parâmetro.
Verifique isso postagem no blog fora para um exemplo
Esta é uma restrição do navegador.Todas as chamadas javascript devem ser para o mesmo servidor e porta inicial do script.Isso exigirá algo do lado do servidor para contornar.I.E.ter o processo em localhost
encaminhar a solicitação para localhost:7076
.
É uma merda, mas é necessário...Basicamente, o que você precisará fazer é proxy de sua solicitação AJAX por meio de um proxy local - algum script/página/qualquer coisa no mesmo domínio em que você está - receber a chamada e encaminhá-la para outro servidor de recursos- lado.Pode haver alguns truques de IFRAME que você poderia fazer, mas não acho que funcionem muito bem...podem estar errados, já faz algum tempo.