Pregunta

Al usar una solicitud de XMLHTTP en javascript, deseo enviarlo a un sitio web externo, en lugar de aquel en el que está alojado el archivo .js. Para enviarlo a test.php en el servidor actual, usaría

request.open("POST", "test.php", true);

pero para el segundo argumento, ¿cómo lo envío a otro sitio web? " example.com/test.php" busca un archivo en el servidor actual, y " http://example.com/test.php " justseems para fallar completamente.

¿Fue útil?

Solución

No puedes por razones de seguridad. Consulte la la misma política de origen para JavaScript.

Hay algunas soluciones que explotan los errores del navegador o los casos de esquina, pero no se recomienda su uso.

El mejor enfoque es tener un proxy del lado del servidor que reciba solicitudes Ajax y, a su vez, envíe solicitudes HTTP a otros servidores. Esto debe implementarse con cuidado al sanear las entradas y en la lista blanca de tipos de solicitudes que se envían y los servidores que se contactan.

Otros consejos

Esto suena como un mal caso de Política del mismo origen , mi amigo:)

No puede (en su mayor parte) usar XmlHttpRequest para obtener datos de un sitio web externo. Sin embargo, lo que puede hacer es crear dinámicamente una etiqueta SCRIPT y hacer referencia a una dirección externa. jQuery envuelve esto funcionalmente como parte de su manejo de ajax.

De hecho, usted puede. Aunque no en ningún navegador.

En Internet Explorer 8.0 hay XDomainRequest , un objeto que permite peticiones de dominio cruzado. Necesitaría manejar adecuadamente la solicitud realizada con este objeto en el servidor enviando primero el encabezado de Access-Control-Allow-Origin con " * " o nombre de dominio del solicitante.

De todos modos, ya estás haciendo algunas cosas maliciosas, ¿por qué no intentar usarlo en IE8 primero?

Si tiene control sobre el servidor, puede usar este encabezado en la respuesta HTTP, aunque es posible que no funcione con todos los navegadores.

Access-Control-Allow-Origin: *
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top