我听说您可以使用 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/