2010-06-29 12 views
5

Aquí está mi situación:cruz XMLHTTPRequest dominio

Tengo una máquina de servidor web, la máquina cliente, y una tercera máquina que ejecuta un programa que detecta XMLHttpRequests.

El cliente accede al servidor web desde la máquina del cliente, realiza algunos cambios y luego hace clic en 'Guardar'. En este punto, los datos se envían nuevamente al servidor web y a la tercera máquina. Todo esto se hace usando el objeto JavaScript y XMLHttpRequest.

La publicación en el servidor web funciona bien, sin embargo, la publicación en la tercera máquina no funciona, ya que tenía una dirección IP/dominio diferente.

¿Cómo puedo hacer esto? Cliente máquina -> Tercera máquina no funciona, porque está en un dominio diferente Máquina servidor web -> Tercera máquina no funciona, debido a problemas de firewall

¡Cualquier idea es muy apreciada!

Respuesta

3

Lo que se está ejecutando es el Same origin policy, no problemas de firewall.

Si las máquinas comparten un dominio de nivel superior, puede set their document.domain properties to match:

Dos sitios que comparten un alto nivel común dominio de la opción de comunicarse a pesar de no el cheque "mismo host" por estableciendo mutuamente su respectiva propiedad de DOM document.dominio en el mismo fragmento calificado de la derecha de su nombre de host actual.

De lo contrario, puede que tenga que configurar su primer anfitrión a proxy de la solicitud a la otra anfitriona.

2

También podría usar el iframe hack. Un iframe alojado por el segundo dominio se puede representar en una página alojada por el primer dominio, y se puede acceder al window object para el iframe desde el contexto de la página principal.

+1

Esto no suena como una mala idea, creo que también puede publicar mensajes() entre fotogramas en este caso. – erikvold

1

Otra opción (que sin duda es un poco tecnológica) es usar YQL si los datos no son sensibles. Puede usar YQL & JSON-P para obtener datos de otros dominios también.

3

Puede implementar CORS (Cross-Origin Resource Sharing) en su servidor.

Las versiones actuales de los principales navegadores de escritorio lo han soportado por un tiempo, siendo Opera y Explorer 10 los últimos en agregar soporte.

No estoy seguro de cuán ampliamente compatible con CORS se encuentra en los navegadores móviles en este momento sin embargo.