views:

336

answers:

2

I'm tying to send POST data from one site to another (both sites have been developed by us). The problem is that the POST variables are not available if the page is requested from another domain. Even if I test it locally, but specify the complete url, the POST data is gone.

So, this will work:

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

But this will not:

<form method="POST" action="http://example.com/test.php"&gt;

Here is the HTML for the page:

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

After the comments I got that this should work, I tested it on another server and there everything worked fine indeed. This might have something to do with the fact on the first server https is enabled. But if this is the case, I find it strange that I do get information back but that just the POST data has gone missing.

+5  A: 

What you have should work fine - forms came before the same-origin policy - you're allowed to submit to different domains.

If I were to hazard a guess, I'd say there's a 301 or 302 redirect getting in there somehow? Follow the HTTP headers with Firebug for example to be sure.

Greg
there was indeed a redirection; from http to https
+1  A: 

As others have said, there should be no problem doing this. I would suggest replacing your test.php script with something simple, like this

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

You should find it works, which means the blame lies somewhere in the "real" script...

Paul Dixon
This is exactly what I did, and how I verified that indeed the POST variables are missing in only 1 of the 2 cases