2009-08-24 11 views
11

Mi sto legando per inviare dati POST da un sito a un altro (entrambi i siti sono stati sviluppati da noi). Il problema è che le variabili POST non sono disponibili se la pagina è richiesta da un altro dominio. Anche se lo provo localmente, ma specifica l'url completo, i dati POST sono spariti.come abilitare il POST-ing tra domini in PHP?

Quindi, questo funzionerà:

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

Ma questo non lo farà:

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

Ecco il codice HTML per la pagina:

<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> 

dopo i commenti che ho ricevuto che questo dovrebbe funzionare, l'ho provato su un altro server e lì tutto ha funzionato davvero bene. Questo potrebbe avere qualcosa a che fare con il fatto che sul primo server https è abilitato. Ma se questo è il caso, trovo strano che io riceva le informazioni ma che solo i dati POST sono scomparsi.

+2

Questo dovrebbe funzionare. Potresti postare l'intero modulo? –

+0

vedi sotto (solo l'URL è stato cambiato per proteggere gli innocenti :) \t \t \t \t \t \t \t

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

+0

@coen - ho aggiornato la tua domanda per aggiungere il tuo commento - cercare di modificare la tua domanda la prossima volta invece di inviare aggiornamenti ai commenti –

risposta

18

Quello che devi funzionare correttamente - i moduli sono stati preceduti dalla politica dell'origine originale - puoi inviare a domini diversi.

Se dovessi azzardare un'ipotesi, direi che c'è un reindirizzamento 301 o 302 che entra lì in qualche modo? Per esempio, segui le intestazioni HTTP con Firebug per essere sicuro.

+0

c'era davvero un reindirizzamento; da http a https –

+0

Esiste una soluzione per questo? – salmanhijazi

2

Come altri hanno già detto, non ci dovrebbero essere problemi a farlo. Vorrei suggerire di sostituire lo script test.php con qualcosa di semplice, come questo

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

Si dovrebbe trovare funziona, il che significa che la colpa è da qualche parte nel copione "reale" ...

+0

Questo è esattamente quello che ho fatto e come ho verificato che effettivamente le variabili POST mancano solo in 1 dei 2 casi –

1

Forse anche una Risparmio tempo:

Se si POST di domain.com assicurarsi che non venga reindirizzato a www.dominio.com. Il reindirizzamento non prende in considerazione le variabili POST, solo GETvariabili.

Se viene reindirizzato a www.domain.com, aggiungere www. nella tua azione POST