0

2つの異なるサーバーがあり、あるサーバーから別のサーバーに投稿データを送信する必要があります。ただし、以下で説明する問題がいくつかあります。まず、それらについて説明します。

  • Linux上で実行されているApache+PHPを使用する最初のサーバー。
  • 2番目のサーバーはIISを使用しており、Windowsで実行されています。PHPがインストールされています。

さて、これが私がやろうとしていることです:

  • 私の最初のサーバーでは、ユーザーがフォームに入力して、同じサーバー内のファイルに送信します。
  • そのファイルで、ユーザーが入力したデータを処理し、ユーザーを2番目のサーバーのページにリダイレクトします。このリダイレクトは、POSTリクエストとしてのデータ処理の結果と一致する必要があります。
  • まだ私の秒サーバーで、私のユーザーは彼のクレジットカード情報を入力し終えます。その後、支払いを処理します。
  • (IISサーバーで)支払いの処理が完了したら、POSTデータ(支払い処理の結果)を追加して、ユーザーを最初のサーバーの別のファイルにリダイレクトします。

ただし、フォームを「エコー」して再度送信せずにユーザーをリダイレクトする方法はわかりません。

私はこのテーマについて多くのことを読み、apacheにcURLを使用して、またはstream_context_createandを使用して投稿データを送信stream_get_contentsさせ、結果を取得することができました。ただし、私がやりたいのは、リクエストをディスパッチして結果を表示するのではなく、投稿データとともにユーザーをリダイレクトすることです。

これはこの質問の複製ではありません。q0987のようにファイルが同じサーバーにないため、ユーザーのセッションにデータを保存できません。

また、関数は応答ヘッダーのみを作成するheaderため、関数を使用してリクエストを行うことはできません。header

IISサーバーにライブラリ(cURL / libcurlなど)をインストールするための十分な権限がありません。IISのみがVISAnetライブラリへのアクセスを許可されているので、最初のサーバーで支払いを処理できません。また、IISにすべてを配置することはできません。

私はPHPでそれを達成しようとしていますが、私がやろうとしていることが可能かどうかさえわかりません。

ユーザーの履歴(および戻るボタン)が台無しになるため、フォームを書き留めて送信したくありません。

4

2 に答える 2

2

リダイレクトにPOST動詞を使用することはできません。私はあなたの問題がクロスサーバーの相互作用で解決できると思います:

server-1 receives data
server-1 sends data to server-2 and server-2 responds some associated id with that data
server-1 redirects user to server-2 with id in redirect uri query
server-2 receives user's GET request (id is stored in uri query).
server-2 receives data with given id
viola - server-2 knows what server-1 sent to it
于 2012-11-16T14:31:31.780 に答える
0

あなたが求めていることは、あなたが説明した方法で行うことはできません。これは仕様によるものであり、そのように行われることを意図したものではありません。可能であれば、まったく新しいエクスプロイトの世界が開かれるでしょう。

あなたはアプローチを変える必要があります、さもなければあなたはそれがどのように行われるべきかについて重要な何かを誤解しました。

于 2012-11-16T14:20:28.887 に答える