Pergunta

Ao usar um XMLHttpRequest em javascript, eu quero enviá-lo para um site externo, em vez de um onde o arquivo js está hospedado. Para enviá-lo para test.php no servidor atual, eu usaria

request.open("POST", "test.php", true);

mas para o segundo arguemnt, como posso enviá-lo para outro site. "example.com/test.php" procura por um arquivo no servidor atual, e " http: // exemplo. com / test.php " justseems a falhar completamente.

Foi útil?

Solução

Você não pode por razões de segurança. Veja a política de mesma origem para JavaScript.

Existem algumas soluções que exploram bugs do navegador ou casos de canto, mas usá-los não é recomendado.

A melhor abordagem é ter um proxy do lado do servidor que recebe solicitações Ajax, e por sua vez, HTTP envia pedidos para outros servidores. Isto deve ser cuidadosamente implementados por saneantes entrada e whitelisting os tipos de solicitações que são enviadas, e os servidores que são contactadas.

Outras dicas

Isso soa como um caso de má Same Política de Origem, meu amigo:)

Você não pode (na maior parte) o uso XMLHttpRequest para obter dados de um site externo. O que você pode fazer, no entanto, é criar dinamicamente uma tag SCRIPT e fazer referência a um endereço externo. jQuery wraps esta funcionalmente como parte de seu tratamento de ajax.

Na verdade você pode. Não em qualquer navegador embora.

No Internet Explorer 8.0 não existe XDomainRequest , um objeto permitindo solicitações entre domínios. Você precisaria pedido devidamente punho feito com esse objeto no servidor enviando Access-Control-Allow-Origin cabeçalho primeiro com "*" ou nome de domínio solicitante.

Uma vez que você está fazendo algumas coisas hacky de qualquer maneira, por que não tentar usá-lo no IE8 primeiro?

Se você tem controle sobre o servidor, você pode usar este cabeçalho na resposta HTTP, embora ele pode não funcionar com todos os navegadores.

Access-Control-Allow-Origin: *
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top