0

我必须有一个页面提交到外部网站。不是问题。

问题是外部网站显示成功消息,不好,我需要获取提交它的网站以重定向到更用户友好的网站。外部网站不会重定向,如果我将重定向页面传递给它,我认为这可能是最简单的。

无论如何,对于最简单和省力的方法有什么建议吗?我读到有一个 iFRAME。还有其他方法吗?

提前致谢!

这些是静态 HTML 页面。

4

3 回答 3

1

既然您说“外部站点不会重定向”,我假设您无法控制它。

这意味着你有我能想到的三种可能的方法。

  1. 通过您自己的服务器代理请求。这是安全的选项,但不会使用第三方网站期望用户提供的任何 cookie。
  2. 使用 iframe 并假设它永远不会失败(因为您无法读取结果)。它可能会出错或超时,而您无法进行补偿。
  3. 使用 Java Applet(或类似的),并让用户接受一系列可怕的安全警告(如果他们甚至安装了 Java 插件)
于 2009-05-13T09:34:53.327 回答
1

我假设您无法触摸外部站点的标记。

如果它们是静态的,那么您就缺少解决方案。我经常使用 cURL 库来提供这种功能(在幕后发布到外部站点)。

您也许可以使用 iframe 和 JavaScript 来实现。将表单的目标设置为 iframe 的名称(可能使用 CSS 隐藏 iframe)。然后,它应该提交罚款。

于 2009-05-13T06:34:33.247 回答
-1

IFRAME 解决方案似乎是最简单的,但如果发生错误,您可能不会注意到。

如果要提交的站点返回可预测的标记,那么 AJAX 路由会更可取,因为它允许您的站点解析并响应帖子的结果。但是,它很容易受到禁用 JavaScript 的用户的攻击。

可能最好的解决方案是编写您的标记以使用 IFRAME 技术,但在表单上放置一个“onsubmit”处理程序。如果启用了 JavaScript,则处理程序可以执行 AJAX 操作 - 否则 IFRAME 解决方案将启动。

请记住在启用 JavaScript 时将“return false”添加到 onsubmit 属性,以防止 IFRAME 提交。

<form action="http://external.server/submission.html" 
      target="id_of_your_IFRAME" 
      onsubmit="submitViaAJAX(); return false">
    ... form fields ...
</form>
于 2009-05-13T07:48:50.507 回答