2009-08-24 13 views
11

POSTデータをあるサイトから別のサイトに送信したいと考えています(両方のサイトが私たちによって開発されました)。 問題は、ページが別のドメインから要求された場合にPOST変数を使用できないことです。 ローカルでテストしても完全なURLを指定しても、POSTデータはなくなりました。PHPでクロスドメインPOSTを有効にする方法は?

ので、これは動作します:

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

しかし、これはしません:ここでは

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

は、ページのHTMLです:私はあることだコメントした後

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

これはうまくいくはずです。私は別のサーバーでそれをテストしました。これは、最初のサーバーhttpsが有効になっているという事実と関係があります。しかし、これが当てはまる場合、私は情報が戻ってくるのは不思議ですが、POSTデータだけが欠落していることがわかります。

+2

これは動作するはずです。フォーム全体を投稿できますか? –

+0

URLのみが無実を保護するために変更されています(下記参照:) \t \t \t \t \t \t \t <フォームメソッド= "POST" ACTION = "のhttp:// completeurl.com/test。PHP "> \t \t \tの \t \t \tの \t \t \t –

+0

@coen - 私はあなたのコメントを追加するには、あなたの質問を更新しました - あなたが最初にHTTPを持っていない、あなたの実際のフォームにコメント –

答えて

18

あなたが持っているものは同じ起源のポリシーの前に来たもので、別のドメインに提出することができます。

私が推測すると危険な場合は、何とか301または302のリダイレクトがあるとします。たとえば、FirebugでHTTPヘッダーに従ってください。

+0

本当にリダイレクトがありました。 httpからhttps –

+0

これには解決策がありますか? – salmanhijazi

2

他の人は言ったように、これを行うには問題はありません。私もたぶん...この

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

のようにあなたは責任が「本当の」スクリプトのどこかにあることを意味する、それが動作するはずです、単純なもので、あなたのtest.phpをスクリプトを置き換える

+0

これはまさに私がやったことで、実際にPOST変数が2つのケースのうちの1つに欠落していることをどのように確認しましたか –

1

を示唆していますtimesaver:

domain.comにPOSTすると、www.domain.comにリダイレクトされないことを確認してください。 リダイレクトではPOST変数は考慮されず、GET変数のみが考慮されます。

www.domain.comにリダイレクトされる場合は、www。あなたのPOSTアクションで

関連する問題