2009-08-24 13 views
11

Estoy tratando de enviar datos POST de un sitio a otro (ambos sitios han sido desarrollados por nosotros). El problema es que las variables POST no están disponibles si la página se solicita desde otro dominio. Incluso si lo pruebo localmente, pero especifico la url completa, los datos de POST se han ido.cómo habilitar la POST-ing de dominio cruzado en PHP?

Por lo tanto, esto va a funcionar:

<form method="POST" action="test.php"> 

Pero esto no:

<form method="POST" action="http://example.com/test.php"> 

Aquí está el código HTML de la página:

<html> 
<head> 
    <title></title> 
</head> 
<body> 
    <form method="post" action="http://example.com/test.php"> 
     <input type="text" name="request" value="" id="" /> 
     <input type="submit" value="" id="" /> 
    </form> 
</body> 
</html> 

Después de los comentarios que recibí de que esto debería funcionar, lo probé en otro servidor y allí todo funcionó bien. Esto podría tener algo que ver con el hecho de que en el primer servidor https está habilitado. Pero si este es el caso, me parece extraño que obtenga información pero que los datos POST hayan desaparecido.

+2

Esto debería funcionar. ¿Podrías publicar todo el formulario? –

+0

ver más abajo (sólo el sitio de Internet ha sido cambiado para proteger a los inocentes :) \t \t \t \t \t \t \t

\t \t \t \t \t \t \t \t
\t –

+0

@coen - he actualizado su pregunta para agregar un comentario - tratar de editar su pregunta próxima vez en lugar de publicar actualizaciones a los comentarios –

Respuesta

18

Lo que tiene que funcionar bien: los formularios vienen antes de la misma política de origen: se le permite enviar a diferentes dominios.

Si tuviera que aventurar una suposición, ¿diría que hay una redirección 301 o 302 entrando de alguna manera? Siga los encabezados HTTP con Firebug, por ejemplo, para estar seguro.

+0

hubo de hecho una redirección; de http a https –

+0

¿Hay alguna solución para esto? – salmanhijazi

2

Como han dicho otros, no debería haber ningún problema para hacer esto. Yo sugeriría reemplazar el script prueba.php con algo simple, como este

<?php 
echo "<pre>"; 
var_dump($_POST); 
echo "</pre>"; 

debería buscar que funciona, lo que significa que la culpa recae en algún lugar de la secuencia de comandos "real" ...

+0

Esto es exactamente lo que hice, y cómo comprobé que de hecho las variables POST faltan en solo 1 de los 2 casos –

1

Tal vez también una Ahorro de tiempo:

Si realiza una POST en domain.com, asegúrese de que no se redirecciona a www.domain.com. La redirección no tiene en cuenta las variables POST, solo GETvariables.

Si se redirecciona a www.domain.com, agregue el www. en su POST-acción

Cuestiones relacionadas