通过使用postMessage()访问跨原点框架绕过原点阻止的帧

时间:2019-01-12 05:57:46

标签: javascript iframe postmessage cross-origin-read-blocking

我听说您可以使用postMessage()绕过“阻止原点的框架访问跨域框架”,并且我一直在尝试使用它,但是它不能正常工作。我在做什么错了?

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

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

1 个答案:

答案 0 :(得分:2)

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

流程如下:

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