0

我听说您可以使用 postMessage() 绕过“阻止具有来源的框架访问跨域框架”,我一直在尝试使用它,但它无法正常工作。我究竟做错了什么?

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

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

1 回答 1

2

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

流程将如下所示:

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