Cuando JavaScript fue desarrollado por primera vez, no se imaginaba que iba a tener un amplio uso, y por lo tanto muchos de los supuestos de hecho durante su desarrollo, que se han convertido en problemáticas de hoy en día.
Cuando Microsoft diseñó el XMLHttpRequest
en su Navegador Internet Explorer, que fue diseñado con una gran limitación.
El XMLHttpRequest
no permiten hacer una petición a otro servidor. Incluso dos servidores que se ejecutan en la misma máquina, pero diferentes puertos tienen esta limitación.
Lo que usted necesita hacer, es tener un cgi proxy en el apache servidor web (puerto 80), y el uso de la OpenLayers.ProxyHost a punto.
El OpenLayers sitio tiene un FAQ Respuesta para este problema :
¿Por qué necesito un ProxyHost?
Debido a restricciones de seguridad en Javascript, no es posible
recuperar la información de los dominios remotos a través de un XMLHttpRequest.
Las clases como WFS y GeoRSS uso de XMLHTTPRequest para obtener sus datos. Si
se consulta a un servidor remoto (otra cosa que la máquina
el alojamiento de su página), debe instalar un script de proxy en algún sitio web
accesible en esa máquina. Vea a continuación para saber cómo configurar su propio
ProxyHost.
Si el OpenLayers.ProxyHost variable no está configurado para una válida de host proxy,
las solicitudes se envían directamente a los servidores remotos. En la mayoría de los casos, la
el resultado será una excepción de seguridad, a pesar de esta excepción a menudo
se produce de forma silenciosa. ¿Cómo puedo configurar una ProxyHost?
Un ejemplo de host proxy secuencia de comandos está disponible aquí:
trunk/openlayers/ejemplos/proxy.cgi
Para el estándar de configuración de Apache, que pondría proxy.cgi en
tu directorio /usr/lib/cgi-bin/ directorio.
Una vez que un host proxy secuencia de comandos se ha instalado, a continuación, debe editar el
OpenLayers.ProxyHost variable para que coincida con la URL.
Dado lo anterior estándar de configuración de Apache:
OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";
Si usted ha hecho algo como esto, usted debería ser capaz de visitar:
http://YourDomain.example.com/cgi-bin/proxy.cgi
El contenido resultante en esa página debe ser el openlayers.org
sitio web.
Si usted recibe un error 404 en lugar de eso, el script de proxy no está en la
ubicación correcta, o su servidor web no está configurado correctamente.
Después de haber copiado el archivo de proxy para el servidor, no se te olvide editar el allowedHosts
de la matriz.
A pesar de que las respuestas existentes son bastante antiguo, creo que debe ser una respuesta exhaustiva, ya que esta cuestión se ha convertido en un canónica pregunta, y muchos otros son cerrados como sus duplicados. Este es mi intento de responder a esta pregunta, basándose en otras respuestas que he escrito en este sitio.