我正在使用iframe来显示另一个跨平台的网站,我想知道用户在iframe标签中访问的URL,我知道它需要同源策略,但它不允许当用户更改导航并刷新父页面时,iframe返回到原始阶段,但我想将其更改为用户在iframe中最后访问的页面。有可能吗?我试过这个:
iframe.contentWindow.console[logType] = function() {
logUtil.log.apply(logUtil, arguments);
original.apply(iframe.contentWindow.console, arguments);
};
字符串
1条答案
按热度按时间eqoofvh91#
在我看来,你试图访问的网站的URL内访问的iframe。但是,由于同源策略,如果从不同的域加载iframe,则无法直接访问其内容。这是保护用户免受跨站点脚本攻击的安全措施。
您提供的代码片段似乎试图拦截iframe的窗口对象的控制台日志。但是,这段代码并没有解决访问iframe中被访问页面的URL的问题。
如果您同时控制父页面和iframe的内容,则可以在它们之间实现postMessage通信机制。这将允许父页面从iframe接收消息,包括加载页面的URL。您可以使用postMessage API将必要的信息从iframe发送到父页面。
下面是一个如何实现此目标的示例:
在iframe的内容脚本中:
字符串
在父页面中:
型
请注意,您需要将
'https://example.com'
替换为iframe URL的实际来源,以确保您只接受来自可信来源的消息。请记住,如果另一个域没有实现允许此类访问的措施,例如CORS(跨域资源共享)标头,则可能无法访问托管在不同域上的iframe内的页面的URL。