javascript - 使用 postMessage() 绕过原点被阻止的框架来访问跨原点框架

标签 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();
});

最佳答案

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

流程将如下所示:

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

关于javascript - 使用 postMessage() 绕过原点被阻止的框架来访问跨原点框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54157154/

相关文章:

javascript - ExtJs 5 - 捕获 Ext.ux.IFrame 的 keydown 事件

javascript - 检查 iframe src 中是否存在自动播放属性

javascript - 可以使用 PostMessage API 与 Android WebView 进行通信吗?

javascript - 静音隐藏的 Youtube iframe .. JS 中的按钮 onclick 不起作用

javascript - 通过 $.ajax GET 发送 jQuery $.data 对象

javascript - 使用 Vuetify 将修饰符添加到菜单激活器中的 v-on

javascript - CORS AJAX 请求到 Chrome 中本地 WSGI 服务器的延迟过高

javascript - postMessage 或 addEventListener 不起作用

target - 无法在 'postMessage' : target/origin mismatch http vs https 上执行 'DOMWindow'

javascript - 将 (AJAX) 数据发布到另一个页面