发送Post数据到远程站点并显示结果

Sending Post Data to remote site and displaying the results

本文关键字:站点 显示 结果 数据 Post 程站点 发送      更新时间:2023-09-26

我在这里读过不少帖子,询问大致相同的事情,但通常询问的人可以访问远程站点,并可以使用可用的方法来实现这一点。我的情况有点不同,我只是想在花时间和精力尝试让它工作之前看看它是否可能。

我试图访问的网站是远程的,我无法访问它,它只能从登录到OpenVPN的计算机访问。

我正在写的工具是试图从远程站点获得表单提交的结果。我不想解析结果或以任何方式修改它。我只想显示发送的Post Data的页面。远程站点使用AJAX提交表单。

代码如下:

<form name="MyForm" action="response_normal.php" method="post" onsubmit="xmlhttpPost('response_ajax_v2.php', 'MyForm', 'response', '<img src=''pleasewait.gif''>'); return false;">

在该页上提交时,发送三个值:

site : radio1
search : 000000000000
submit : Search Site

我是否可以简单地将该帖子数据发送到页面并显示它?我希望在iframe中做到这一点-因为VPN限制,我无法在服务器端做到这一点。

由于访问异地服务器的计算机位于访问远程系统的VPN上(假设该远程系统在您的控制之下),因此可以让异地服务器返回一些JavaScript, ajax可以使用类似json的策略从远程系统提取数据(在本例中是完整的HTML页面)。

我在过去的一些小项目中使用过这种技术。

从那里,您可以自由地对数据做任何您想做的事情——修改它,按原样返回它,或以其他方式。

就我个人而言,我会尽量避免使用框架。当然,当时间紧迫时,没有什么是不受限制的;)

然而,如果远程系统不在您的控制之下(并且它们没有强大的CORS交叉访问策略),那么您唯一的选择是,正如您在问题正文中所说的,帧。下面是一个例子:

<!-- If the remote system is NOT under your control, it CANNOT respond with the X-Frame-Options header set to SAMEORIGIN or DENY! -->
<iframe id="inlineframe" src="http://www.randomwebsite.com" frameborder="0" scrolling="auto" width="800" height="300" marginwidth="5" marginheight="5" ></iframe>
//Depending on the JS you put here, you may get some "unsafe Javascript" warnings from certain browsers
~function()
{
    var frame = document.getElementById('inlineframe'),
        ref = frame.contentWindow ? frame.contentWindow.document : frame.contentDocument;
    // ref is now a reference to the document of the content within the iframe
    // You can now do your getElementById/getElementByTagName etc. and otherwise
    // manipulate the response as you please.
    console.log(ref);
}();

可以在这里找到一个工作示例:http://jsfiddle.net/FTudJ/

iframe的内容应该是远程页面提交的结果,或者远程服务器响应的任何内容。如果你不想修改任何东西,那么你甚至不需要Javascript组件。

关键字将是您指定的作为iframe源的URL。现在,如果远程系统不支持表单提交的GET请求(在示例代码中,我看到了一个"POST"方法),再加上您无法控制它,并且您的离线系统无法以任何方式访问它,那么您唯一的其他选项是:

  • 不直接提供表单的提交URL,而是简单地向iframe提供表单的典型访问URL。然后,使用JavaScript用必要的值填充表单,然后在iframe中提交表单,就像您是用户一样。从那里,您可以将结果抓取回JavaScript或简单地显示它们。

  • 找到一种方法让您的离线服务器进入VPN网络,以便它可以代表您与远程系统通信。当然,如果这很容易的话,我想你早就做了!

  • 将用户重定向到远程站点——可能使用像Google过去那样的框架集+横幅框架,让他们在那里做他们需要做的事情,然后告诉他们完成后再回来。

,

我看到你正在使用PHP。只要执行PHP的服务器能够访问访问该远程系统的VPN——所有这些都是通过传统的http进行的——服务器端的一个简单的curl调用就足够了,因为您可以使用AJAX将结果传递给客户端。

这些链接可能会有所帮助:

  • http://php.net/manual/en/book.curl.php
  • PHP中的cURL是什么?
  • http://php.net/manual/en/curl.examples-basic.php
  • Post数据和检索响应使用PHP Curl?