发送Post数据到远程站点并显示结果
Sending Post Data to remote site and displaying the results
我在这里读过不少帖子,询问大致相同的事情,但通常询问的人可以访问远程站点,并可以使用可用的方法来实现这一点。我的情况有点不同,我只是想在花时间和精力尝试让它工作之前看看它是否可能。
我试图访问的网站是远程的,我无法访问它,它只能从登录到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?
- 引导模式在站点中未正确显示
- 如何从显示提要的外部服务器或站点解析RSS URL
- 显示来自外部站点的 html
- 如果站点上存在多个滑块,则显示 Jquery UI 滑块的值
- 谷歌浏览器不显示一个站点的alert()弹出窗口
- 套接字 - 客户端站点上不显示任何数据
- 如何在 ace 编辑器中显示 html 站点的代码
- 显示FB登录,仅当当前站点之前未登录时
- 强制“访问完整站点”链接以始终显示完整站点
- jquery/JavaScript 显示隐藏内容并将站点向右推送
- Rails:重定向到外部站点之前显示警报
- 使用按钮在任何站点上显示模态JS对话框
- 在任何站点上显示JS(jQuery)小部件,ASP.NET MVC服务器端
- 在iframe中显示活动站点,作为父页面url的扩展
- 在显示/隐藏项目时保持站点位置
- 发送Post数据到远程站点并显示结果
- 为什么噩梦在特定站点上运行良好,但是当我尝试使用另一个站点时,它会显示错误
- 显示页面预览并在另一个站点中对其进行操作
- 多站点未在一个站点上显示标题/导航
- 浏览器默认在 javascript 警报框中显示站点 ip