// In the parent website:
// Listen for messages from the iframe
window.addEventListener('message', receiveMessage, false);
function receiveMessage(event) {
// Check if the message is from the iframe
if (event.origin !== 'http://example.com') {
return;
}
// Print the URL visited by the user inside the iframe
console.log(event.data);
}
// In the iframe:
// Send a message to the parent website when the user navigates to a new page
window.addEventListener('load', function() {
window.parent.postMessage(window.location.href, 'http://example.com');
}, false);
1条答案
按热度按时间wwtsj6pe1#
由于同源策略,无法跟踪iframe内的用户导航。此策略可防止来自一个源(网站)的脚本访问来自另一个源(iframe内的网站)的信息。这是一种安全措施,可防止恶意网站访问其他网站的敏感信息。
解决此限制的一种方法是使用
postMessage
方法在父网站和iframe之间进行通信。这允许父网站向iframe发送消息并接收响应,但不允许父网站直接访问iframe的内容。下面是如何使用
postMessage
在父网站和iframe之间进行通信的示例:请注意,这种方法需要iframe内部网站的合作,因为每当用户导航到新页面时,它需要向父网站发送消息。此外,父网站必须能够信任从iframe接收的消息,因为它们很容易被欺骗。