Quando o JavaScript foi desenvolvido, não se imaginava que ele tivesse um uso tão amplo e, portanto, foram feitas muitas suposições durante seu desenvolvimento, que se tornaram problemáticas hoje.
Quando a Microsoft projetou o XMLHttpRequest
navegador Internet Explorer, ele foi projetado com uma grande limitação.
O XMLHttpRequest
não permite que você faça diretamente uma solicitação para outro servidor. Até dois servidores rodando na mesma máquina, mas portas diferentes têm essa limitação.
O que você precisa fazer é ter um proxy cgi no servidor da web apache (porta 80) e usar o OpenLayers.ProxyHost para apontar para ele.
O site OpenLayers tem uma resposta de perguntas frequentes para este problema :
Por que preciso de um ProxyHost?
Devido a restrições de segurança em Javascript, não é possível recuperar informações de domínios remotos por meio de um XMLHttpRequest.
Classes como WFS e GeoRSS usam XMLHTTPRequest para obter seus dados. Se eles estiverem consultando um servidor remoto (qualquer coisa que não seja a máquina que hospeda sua página), você deve instalar um script proxy em algum lugar da Web acessível nessa máquina. Veja abaixo como configurar seu próprio ProxyHost.
Se a variável OpenLayers.ProxyHost não estiver configurada para um host proxy válido, as solicitações serão enviadas diretamente aos servidores remotos. Na maioria dos casos, o resultado será uma exceção de segurança, embora essa exceção ocorra frequentemente silenciosamente. Como faço para configurar um ProxyHost?
Um exemplo de script de host proxy está disponível aqui:
trunk / openlayers / examples / proxy.cgi
Para a configuração padrão do Apache, você colocaria proxy.cgi em seu diretório / usr / lib / cgi-bin /.
Depois que um script de host proxy for instalado, você deverá editar a variável OpenLayers.ProxyHost para corresponder a esse URL.
Dada a configuração padrão do Apache acima:
OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";
Se você fez algo assim, deve poder visitar:
http://YourDomain.example.com/cgi-bin/proxy.cgi
O conteúdo resultante nessa página deve ser o site openlayers.org.
Se você receber um erro 404, o script do proxy não está no local correto ou o servidor da Web não está configurado corretamente.
Depois de copiar o arquivo proxy para o servidor, não se esqueça de editar a allowedHosts
matriz.
Embora as respostas existentes sejam bastante antigas, sinto que precisa haver uma resposta exaustiva, pois essa pergunta se tornou uma pergunta canônica e muitas outras estão fechadas como duplicata. Esta é minha tentativa de responder a essa pergunta, com base em outras respostas que escrevi neste site.