Cuando se desarrolló JavaScript por primera vez, no se imaginó que tendría un uso tan amplio y, por lo tanto, se hicieron muchas suposiciones durante su desarrollo, que se han vuelto problemáticas hoy en día.
Cuando Microsoft diseñó el XMLHttpRequest
en su navegador Internet Explorer, fue diseñado con una gran limitación.
El XMLHttpRequest
no le permite realizar una solicitud directamente a otro servidor. Incluso dos servidores que se ejecutan en la misma máquina, pero diferentes puertos tienen esta limitación.
Lo que debe hacer es tener un proxy cgi en su servidor web apache (puerto 80), y usar OpenLayers.ProxyHost para señalarlo.
El sitio OpenLayers tiene una respuesta a preguntas frecuentes para este problema :
¿Por qué necesito un ProxyHost?
Debido a restricciones de seguridad en Javascript, no es posible recuperar información de dominios remotos a través de XMLHttpRequest.
Clases como WFS y GeoRSS usan XMLHTTPRequest para obtener sus datos. Si están consultando un servidor remoto (que no sea la máquina que aloja su página), debe instalar un script proxy en algún sitio web accesible en esa máquina. Vea a continuación cómo configurar su propio ProxyHost.
Si la variable OpenLayers.ProxyHost no está establecida en un host proxy válido, las solicitudes se envían directamente a los servidores remotos. En la mayoría de los casos, el resultado será una excepción de seguridad, aunque esta excepción a menudo ocurre en silencio. ¿Cómo configuro un ProxyHost?
Un script de host proxy de ejemplo está disponible aquí:
trunk / openlayers / examples / proxy.cgi
Para la configuración estándar de Apache, debe colocar proxy.cgi en su directorio / usr / lib / cgi-bin /.
Una vez que se ha instalado un script de host proxy, debe editar la variable OpenLayers.ProxyHost para que coincida con esa URL.
Dada la configuración estándar de Apache anterior:
OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";
Si ha hecho algo como esto, debería poder visitar:
http://YourDomain.example.com/cgi-bin/proxy.cgi
El contenido resultante en esa página debe ser el sitio web openlayers.org.
Si en su lugar obtiene un error 404, o el script proxy no está en la ubicación correcta o su servidor web no está configurado correctamente.
Después de haber copiado el archivo proxy a su servidor, no olvide editar la allowedHosts
matriz.
Aunque las respuestas existentes son bastante antiguas, creo que debe haber una respuesta exhaustiva, ya que esta pregunta se ha convertido en una pregunta canónica, y muchas otras están cerradas por duplicado. Este es mi intento de responder a esta pregunta, basado en otras respuestas que he escrito en este sitio.