不同域名之间共享localStorage/sessionStorage

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不同域名之间共享localStorage/sessionStorage相关的知识,希望对你有一定的参考价值。

参考技术A 两个不同的域名的localStorage不能直接互相访问。那么如何在 aaa.com 中如何调用 bbb.com 的localStorage?

1.在 aaa.com 的页面中,在页面中嵌入一个src为 bbb.com 的 iframe ,此时这个 iframe 里可以调用 bbb.com 的localStorage。
2.用 postMessage 方法实现页面与 iframe 之间的通信。
综合1、2便可以实现 aaa.com 中调用 bbb.com 的localStorage。

我们可以在 bbb.com 中写一个专门负责共享localStorage的页面,例如叫做 page1.html ,这样可以防止无用的资源加载到 iframe 中。

以在 aaa.com 中读取 bbb.com 中的localStorage的 item1 为例,写同理:
bbb.com 中 page1.html ,监听 aaa.com 通过 postMessage 传来的信息,读取localStorage,然后再使用 postMessage 方法传给 aaa.com 的接收者。

在 aaa.com 的页面中加入一个src为 bbb.com/page1.html 隐藏的 iframe 。

在 aaa.com 的页面中加入下面script标签。在页面加载完毕时通过 postMessage 告诉 iframe 中监听者,读取 item1 。监听 bbb.com 传回的 item1 的值并输出。

不同页面之间的互相影响-localStorage

如果需要因为一个页面的操作而改变另一个页面的内容,可以使用监听localStorage的方式。

window.addEventListener("storage", function (e) {

  alert(e.newValue);

});

  另保存json数据到localStorage的方法,先转化字符串

JSON.stringify(obj),取出时在转化为json--JSON.parse(obj);

同一个页面监听变化
 var orignalSetItem = localStorage.setItem;
    localStorage.setItem = function(key,newValue){
        var setItemEvent = new Event("setItemEvent");
        setItemEvent.newValue = newValue;
        window.dispatchEvent(setItemEvent);
        orignalSetItem.apply(this,arguments);
    }
    window.addEventListener("setItemEvent", function (e) {
        alert(e.newValue);
    });
    localStorage.setItem("nm","1234");

  

以上是关于不同域名之间共享localStorage/sessionStorage的主要内容,如果未能解决你的问题,请参考以下文章

localStoragesessionStorage的区别

Thinkphp框架下(同服务器下)不同二级域名之间session互通共享设置

在 webView 和 CordovaWebView android 之间共享 localStorage

sessionStorage的使用

js进阶六:JSON,离线存储,WebSocket,画布,音频/视频

利用localStorage事件来跨标签页共享sessionStorage