Recibir datos con HTTP POST desde dominio/url externa

WWWW Seguir

Pi
Verificación en dos pasos activada
Desde
4 Mar 2013
Mensajes
5.242
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. :p8:
 

adRy

Eta
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
13 Jun 2009
Mensajes
1.360
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
 

WWWW

Pi
Verificación en dos pasos activada
Desde
4 Mar 2013
Mensajes
5.242
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.
 

adRy

Eta
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
13 Jun 2009
Mensajes
1.360
Pruebalo y comentas por aquí para el que venga detrás :D
 

Combex

Gamma
Redactor
Verificación en dos pasos desactivada
Desde
7 May 2009
Mensajes
319
Avisa si te funciona. En algun momento necesitaré hacer algo parecido! :)
 

WWWW

Pi
Verificación en dos pasos activada
Desde
4 Mar 2013
Mensajes
5.242
Pruebalo y comentas por aquí para el que venga detrás :D

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:
 

adRy

Eta
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
13 Jun 2009
Mensajes
1.360
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");
}
 

WWWW

Pi
Verificación en dos pasos activada
Desde
4 Mar 2013
Mensajes
5.242
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. :p8:
 

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba