使用 postMessage() 绕过具有原点的阻塞框架访问跨源框架

Bypassing a blocked frame with origin from accessing a cross-origin frame with postMessage()

我听说您可以使用 postMessage() 绕过 "blocked a frame with origin from accessing a cross-origin frame",我一直在尝试使用它,但它无法正常工作。我做错了什么?

<iframe src="www.example.com" id = "theID"></iframe>

document.getElementById('theID').contentWindow.postMessage({
document.querySelector("input[value='true']").click();
});

您可以将您的服务器用作代理。假设您打算在 iframe 中加载页面 XYZ,您可以创建一个 XYZ.php 页面,该页面向 XYZ 发送请求并在页面中显示响应。您将需要解决可能由相对 URL 引起的问题。另外,请确保您所做的一切都是善意且合法的。

流程将如下所示:

  • parent.php 的请求已发送到服务器
  • 服务器用parent.php响应浏览器
  • 在 parent.php 的结构中,您有一个指向 child.php 的 iframe,这也是您的页面
  • child.php 依次向实际来源发送请求,并将收到的响应发送回浏览器
  • iframe 的 onload 事件将触发您打算执行的 parent.php 的逻辑