iframe中父子域名各不同,如何让子页面可以访问自己的localstroage吗
时间: 2024-03-27 10:39:39 浏览: 279
和 Cookie 一样,由于同源策略的限制,子页面无法直接访问父页面的 LocalStorage。但是同样可以通过 postMessage API 来实现子页面访问自己的 LocalStorage。
在父页面中,可以使用 postMessage 向子页面发送消息,子页面在接收到消息后,可以将数据存储在自己的 LocalStorage 中。
具体方法如下:
在父页面中:
```javascript
// 向子页面发送消息
var iframe = document.getElementById('myiframe');
iframe.contentWindow.postMessage('getData', 'http://子页面的域名');
```
在子页面中:
```javascript
// 接收消息
window.addEventListener('message', function(event) {
if (event.origin === 'http://父页面的域名' && event.data === 'getData') {
// 获取LocalStorage中的数据
var data = localStorage.getItem('data');
// 向父页面发送消息
event.source.postMessage(data, event.origin);
}
});
// 存储数据到LocalStorage中
localStorage.setItem('data', '需要存储的数据');
```
在上面的代码中,当父页面向子页面发送消息时,子页面会将 LocalStorage 中的数据存储在本地,并监听 window 对象的 message 事件。当子页面接收到来自父页面的消息时,会将 LocalStorage 中的数据发送给父页面。
需要注意的是,在使用 postMessage 传递数据时,需要做好数据的安全校验,以避免数据泄露或篡改等安全问题。
阅读全文