托管在其他服务器上时刷新 iframe

Refresh iframe when hosted on different server

本文关键字:刷新 iframe 服务器 其他      更新时间:2023-09-26

我有一个简单的测验,在我客户网站上的iframe中。不幸的是,测验托管在与我客户网站不同的服务器上。客户端希望 iframe 的内容在用户提交表单后 60 秒刷新(很容易完成),但每当我尝试让测验自行刷新时,浏览器都会出于安全原因阻止它 - 它们位于不同的域中。

我不是在尝试更改父窗口目的地,只是重新加载 iframe 本身,所以希望安全性不是问题...... 但是我已经尝试了iframe.contentWindow.history.back();但仍然遇到相同的安全错误:

未捕获的安全错误:阻止了具有原点的帧 "http://www.ourserver.com"访问具有原点的帧 "http://www.clientserver.com"。协议、域和端口必须 火柴。

如何让 iframe 自行刷新?这可能吗?还是浏览器认为 iframe 归父页面所有,因此甚至不让我刷新它?谢谢。

您只能使用消息发布来执行解决方法,所有浏览器都有充分的理由阻止直接操作。

在您的主页中:

var frame = document.getElementById('your-frame-id');
frame.contentWindow.postMessage("reload please, thank you", '*');

在您的(包含在主页中):

window.addEventListener('message', function(event) {
  if (event.data === "reload please, thank you") {
      location.reload();
    }
});