0

我有两台不同的服务器,我需要将发布数据从一台服务器发送到另一台服务器。但有一些问题我将在下面描述。首先,让我描述一下它们:

  • 第一个服务器使用 Apache + PHP,在 Linux 上运行。
  • 第二台服务器使用 IIS,在 Windows 上运行。已安装 PHP。

现在,这就是我想要做的事情:

  • 在我的第一台服务器上,用户填写表单并将其提交到同一服务器中的文件。
  • 在该文件中,我将处理用户填写的数据并将我的用户重定向到我的第二台服务器上的页面。此重定向必须与我的数据处理结果一起作为 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 回答