Javascript 打破iframe,保留POST数据?

Javascript 打破iframe,保留POST数据?,javascript,iframe,Javascript,Iframe,在付款过程中,我在我的网站的iframe中有一个远程3DSecure表单。用户输入3D安全PIN后,远程银行会将用户发回提供的URL(“termURL”)并显示结果。当然,这仍停留在iframe中 在收到银行的邮件后,我想做的是检查我是否在iframe中,如果在iframe中,则跳出iframe 正在检查window.self!==window.top将告诉我是否在iframe中。寻找期望的POST值将告诉我是否已从银行返回(或正在使用银行的3DSecure结果向自己发回)。那么接下来呢 我猜i

在付款过程中,我在我的网站的iframe中有一个远程3DSecure表单。用户输入3D安全PIN后,远程银行会将用户发回提供的URL(“termURL”)并显示结果。当然,这仍停留在iframe中

在收到银行的邮件后,我想做的是检查我是否在iframe中,如果在iframe中,则跳出iframe

正在检查
window.self!==window.top
将告诉我是否在iframe中。寻找期望的POST值将告诉我是否已从银行返回(或正在使用银行的3DSecure结果向自己发回)。那么接下来呢

我猜iframe中的页面需要以
\u top
为目标重新发布自己。我是否需要使用一个自发布表单来实现这一点,或者可以仅使用JavaScript实现这一点


当iframe显示3DSecure表单时,我无法控制iframe的内容,因此当用户返回我的站点时,我无法使该远程站点以用户浏览器中的
\u top
为目标。

通过选中
window.self!=window.top
使用javascript或类似方法:

<script>
  window.onload = function() {
    if (window.parent.document.getElementById('your-iframe-id')) {
      window.top.location.href = "https://the-url-to-continue";
    }
  }
</script>

window.onload=函数(){
if(window.parent.document.getElementById('your-iframe-id')){
window.top.location.href=”https://the-url-to-continue";
}
}

当然,这是另一个
获取
的url继续
,您需要一些东西来确定客户端已经完成了有关3D安全的所有工作。有些东西可能是会话,或者是cookie。。。我推荐会话…

只是为了注意,如果安全方面影响到这一点:我想从iframe中分离出来的页面将与顶部页面位于同一个域中。当用户输入他们的安全PIN时,iframe接收远程URL,而那些远程页面(我无法控制)将留在iframe中。这可能告诉我答案:JavaScript解决方案动态构建一个POST表单,然后提交它。在我的例子中,在服务器上构建表单并使用JavaScript提交表单同样容易。但是从这一点我了解到只有HTML表单可以用于从
iframe
发布到
\u top
窗口。我的理解正确吗?愚蠢的我-直到页面进入浏览器,服务器才知道它正在为
iframe
服务。也许我只需要在会话中保存POST数据或立即处理它,然后使用JavaScript跳出
iframe
,而不用担心POST数据,甚至不用检查我是否实际在
iframe
中。