2011-07-25 23 views
5

Tengo que hacer una llamada POST (con parámetro) a un formulario asp que se encuentra en otro servidor.cross-domain AJAX post call

Para el desarrollo, hice esto en el mismo servidor, y funciona perfectamente, pero ahora lo estoy probando en otro servidor, y en lugar de recibir un estado 200, recibo un estado 0.

Creo que es porque es una llamada AJAX entre dominios, es lo único que ha cambiado. Entonces, ¿cómo puedo hacer esta llamada? ¿Hay algún archivo que pueda poner en el servidor/cliente para permitir esta llamada (como flash, ...)?

¡Gracias!

+0

para una ayuda adicional, es posible que necesitemos saber el origen de la llamada ajax – dvhh

Respuesta

7

Sí, suponiendo que usted puede cambiar el servidor al que conectarse a

que se pueden implementar Cross Origin Resource Sharing (CORS)

Es necesario que el servidor para volver Access-Control-Allow-Origin: * si desea permitir que todos los dominios de acceso, en caso contrario devuelve Access-Control-Allow-Origin: http://yourdomain.com

Si no puede cambiar el servidor al que está accediendo, debe usar un proxy en el servidor del que proviene su secuencia de comandos; alternativamente, investigue si ha publicado una API para devolver, por ejemplo, JSONP

Más detalles aquí

y varios enlaces a la derecha de este cuestiona

+1

, el soporte parece bastante limitado en este momento. – dvhh

+0

Eché un vistazo a su enlace, pero no puedo encontrar dónde debería declarar todos estos "Acceso-Control-Permitir-Origen", ... – J4N

+0

@dvhh - es compatible con la mayoría de los navegadores modernos, es decir, FF3.5 + , Safari5, IE8 + (usando XDR) – mplungjan

0

O se puede crea un script proxy o usa jsonp. El curso más fácil sería usar un script proxy en su servidor.

+0

Lamentablemente, no puedo modificar nada en el servidor – J4N

+0

otra solución sería reescribir su llamada ajax para usar un iframe en su lugar (lamentablemente esto es un poco perrito) – dvhh

+0

@dvhh pero solo podría enviar datos, no recibir ninguna respuesta – mplungjan