Solicitud POST remota con jQuery y Ajax

Necesito hacer una solicitud POST a un dominio remoto a través de Ajax, sé que existe la restricción de la Política de Mismo Origen pero he leído que podría ser posible hacer un puente en PHP en mi servidor para reenviar la solicitud.

El hecho es que no tengo idea de cómo escribir este puente y no puedo encontrar información en Google.
Creo que necesito usar CURL.

¿Puede alguien explicarme cómo escribir uno?

Si necesita un proxy o ” Bridge “, puede intentar lo siguiente: Puede lograr una simple llamada AJAX a ese script PHP y redirigir ese POST a otro servidor que desee.

Cómo funciona:

  1. Crea Proxy.php y pega el contenido.
  2. Haga que una página envíe originalmente una solicitud para enviar una solicitud de AJAX a proxy.php en lugar del servidor de destino.
  3. La solicitud será redirigida al servidor de destino.
  4. Opcionalmente puede configurar la opción CURLOPT_RETURNTRANSFER si desea el resultado.

Por favor, recuerde poner algunos métodos de autenticación de servidor primero , ya que no he escrito ninguno en el ejemplo, o esa página sería una buena máquina de spam

EDITAR: lo que quise decir es que usa su servidor para enviar una solicitud de falla al servidor de destino. de todos modos, no es tan malo agregar una autenticación simple para tus usuarios 🙂

some / where / in / your / server / proxy.php

 $getvar) { $fields[$getname] = urlencode($getvar); //for proxying get request to POST. } foreach($_POST as $postname => $postvar) { $fields[$postname ] = urlencode($postvar); //for proxying POST requests. } //url-ify the data for the POST foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } rtrim($fields_string, '&'); //open connection $ch = curl_init(); //set the url, number of POST vars, POST data curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_POST, count($fields)); curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); //execute post $result = curl_exec($ch); //close connection curl_close($ch); 

Supongo que ya conoces la forma de enviar una solicitud POST ajax. Si de alguna manera no lo estás, intenta leer http://www.openjs.com/scripts/jx/jx.php

Dependiendo de su configuración de PHP y de la complejidad de la solicitud, puede salirse con la suya simplemente usando la función file_get_contents . Por ejemplo:

  

Si coloca esto en un archivo PHP en su dominio, puede usar AJAX para solicitar este archivo sin estar restringido por las mismas políticas de dominio, y devolverá el contenido de cualquier página remota que especifique en la llamada a la función.

Tenga en cuenta que este uso de la función file_get_contents requiere que la directiva allow_url_fopen esté activada. De lo contrario, tendrá que usar bibliotecas como Curl para hacer la solicitud desde PHP.

Si controla el servidor al que está realizando la transferencia, puede establecer la política de tal forma que se permita la POST. Vea esta respuesta .

Si no controla el servidor, tendrá que configurar un proxy, que puede escribir en PHP. Todo lo que realmente hace es transmitir la información entre su JavaScript y el servidor de destino.

  1. Cree un punto final en su sitio, algo así como /proxy
  2. Haga su solicitud como de costumbre, pero en lugar de apuntar a la URL original, apunte a /proxy/ .
  3. En el archivo que maneja el punto final /proxy , simplemente extrae el método HTTP, los encabezados de URL, los parámetros, el cuerpo, etc. y realiza exactamente la misma solicitud al servidor de destino. Puede usar cURL o un paquete como Guzzle para hacer esto. También hay paquetes que proporcionan esta funcionalidad proxy para usted, pero no estoy familiarizado con su calidad.