jquery 如何使用js跟踪iframe的访问

qvsjd97n  于 2023-08-04  发布在  jQuery
关注(0)|答案(1)|浏览(105)

我正在使用iframe来显示另一个跨平台的网站,我想知道用户在iframe标签中访问的URL,我知道它需要同源策略,但它不允许当用户更改导航并刷新父页面时,iframe返回到原始阶段,但我想将其更改为用户在iframe中最后访问的页面。有可能吗?我试过这个:

iframe.contentWindow.console[logType] = function() {
    logUtil.log.apply(logUtil, arguments);
    original.apply(iframe.contentWindow.console, arguments);
};

字符串

eqoofvh9

eqoofvh91#

在我看来,你试图访问的网站的URL内访问的iframe。但是,由于同源策略,如果从不同的域加载iframe,则无法直接访问其内容。这是保护用户免受跨站点脚本攻击的安全措施。
您提供的代码片段似乎试图拦截iframe的窗口对象的控制台日志。但是,这段代码并没有解决访问iframe中被访问页面的URL的问题。
如果您同时控制父页面和iframe的内容,则可以在它们之间实现postMessage通信机制。这将允许父页面从iframe接收消息,包括加载页面的URL。您可以使用postMessage API将必要的信息从iframe发送到父页面。
下面是一个如何实现此目标的示例:
在iframe的内容脚本中:

// Send the visited URL to the parent page
window.parent.postMessage(window.location.href, '*');

字符串
在父页面中:

// Listen for postMessage events from the iframe
window.addEventListener('message', function(event) {
    if (event.origin === 'https://example.com') {
        var iframeURL = event.data;
        // Do something with the URL
    }
});


请注意,您需要将'https://example.com'替换为iframe URL的实际来源,以确保您只接受来自可信来源的消息。
请记住,如果另一个域没有实现允许此类访问的措施,例如CORS(跨域资源共享)标头,则可能无法访问托管在不同域上的iframe内的页面的URL。

相关问题