Recibir datos con HTTP POST desde dominio/url externa

  • Autor Autor WWWW
  • Fecha de inicio Fecha de inicio
WWWW

WWWW

Pi
Verificación en dos pasos activada
Buen día a todos, bueno quisiera saber como poder recibir datos desde una url externa en metodo POST.

Lo que pasa es que me dicen que tengo que diseñar una forma de recibir los datos que envían supuestamente en HTTP POST desde una url externa.

Entonces quisiera saber si existe alguna función o con hearde para permitir el ingreso de datos desde url externas por POST evitando el Cross Domain

He agregado esto a mi archivo php en la primera linea para evitar problemas:

PHP:
<?php
header("Access-Control-Allow-Origin","*"); 

$valor = $_POST['valor'];

echo $valor;

?>

Por lo que entiendo la función anterior permite la aceptación de de datos desde cualquier origen, pero desconozco si funciona para otras peticiones que no sean de JSON.


Bueno lo que realmente se necesita es recibir una imagen por POST desde una url externa, ya que por GET seria imposible.

Gracias por su tiempo y ayuda. 😛8:
 
Quizás este post que publiqué hace días te sirva: https://statickidz.com/proyectos/traductor-google-api-php-gratis/

PHP:
//Permitimos cualquier lugar
header('Access-Control-Allow-Origin: *');
//Le decimos los métodos (POST, GET, PUT, DELETE...)
header('Access-Control-Allow-Methods: GET, POST');  
//Indicamos el formato de salida, lo más normal JSON
header('Content-Type: application/json');

Luego también depende de que tecnología estés utilizando para conectar y si lo haces desde un localhost, en angular js por ejemplo, si se hace desde localhost, tendrás que activar unas cosas del $httpProvider
 
Quizás este post que publiqué hace días te sirva: https://statickidz.com/proyectos/traductor-google-api-php-gratis/

PHP:
//Permitimos cualquier lugar
header('Access-Control-Allow-Origin: *');
//Le decimos los métodos (POST, GET, PUT, DELETE...)
header('Access-Control-Allow-Methods: GET, POST');  
//Indicamos el formato de salida, lo más normal JSON
header('Content-Type: application/json');

Luego también depende de que tecnología estés utilizando para conectar y si lo haces desde un localhost, en angular js por ejemplo, si se hace desde localhost, tendrás que activar unas cosas del $httpProvider



Creo que esta es la función que buscaba
PHP:
//Le decimos los métodos (POST, GET, PUT, DELETE...)
header('Access-Control-Allow-Methods: GET, POST');

Aun no la eh probado, pero si funciona sos un Crack My Brother! jajaja :encouragement:

Voy a probarla y te comento.
 
Pruebalo y comentas por aquí para el que venga detrás 😀
 
Avisa si te funciona. En algun momento necesitaré hacer algo parecido! 🙂
 
Pruebalo y comentas por aquí para el que venga detrás 😀

Si efectivamente funciona, lo curioso es que ahora que lo pruebo desde dominios diferentes y en la misma ip, sin usar las funciones, funciona de todas formas!

No se si se deba a que usan la misma ip, lo cual dudo.

Pero bueno ahora quisiera solo permitir que las peticiones vengan de un determinado sitio, como por ejemplo de http://forobeta.com

Por lo que eh modificado el código por

PHP:
header('Access-Control-Allow-Origin: http://forobeta.com');

y eh comentado las funciones de GET y POST.

Pero el script sigue subiendo los valores y imagenes, sin problemas desde cualquier origen.

Entonces no se por que bloquea las peticiones de otro lados, que no sean de la web que hemos determinado como en el ejemplo que escribí atrás?

Gracias por tu ayuda.

- - - Actualizado - - -

Avisa si te funciona. En algun momento necesitaré hacer algo parecido! 🙂

Efectivamente funciona, saludos. :encouragement:
 
Prueba a ver así

PHP:
$http_origin = $_SERVER['HTTP_ORIGIN'];

if ($http_origin == "http://www.forobeta.com" || $http_origin == "http://www.statickidz.com" || $http_origin == "http://www.dominio.info")
{  
    header("Access-Control-Allow-Origin: $http_origin");
}
 
Prueba a ver así

PHP:
$http_origin = $_SERVER['HTTP_ORIGIN'];

if ($http_origin == "http://www.forobeta.com" || $http_origin == "http://www.statickidz.com" || $http_origin == "http://www.dominio.info")
{  
    header("Access-Control-Allow-Origin: $http_origin");
}

Bueno ahí claro que funciona, ya que estamos filtrando la url de origen.

Pero bueno, creí que con poner:
PHP:
 header('Access-Control-Allow-Origin: http://forobeta.com');

Ya nos evitábamos el filtrado desde cualquier origen.

Pero bueno, no queda de otra que filtrar el origen.

Gracias por tu ayuda y tiempo amigo, saludos. 😛8:
 
Atrás
Arriba