美文网首页
vue通过postMessage解决localStorage跨域

vue通过postMessage解决localStorage跨域

作者: 三亿 | 来源:发表于2019-12-16 15:38 被阅读0次

    localStorage受同源策略影响,存在着跨域访问受限。

    A项目地址:http://127.0.0.1:8080
    B项目地址:http://127.0.0.2:4040

    A项目(vue)

    <template>
      <!-- 解决跨域通信 -->
      <iframe id="receivePage" src="http://127.0.0.2:4040/aaa" style="display: none"></iframe>
    </template>
    <script>
    export default {
      name: 'aaa',
      data () {
        return { 
          },
        }
      },
      components: {},
      created: function () {
    
      },
      mounted: function () { 
           window.frames[0].postMessage("告诉B项目的内容","http://127.0.0.2:4040");
      }
    } 
    </script>
    

    B项目(非vue)

    <script> 
          window.addEventListener('message', function(e) {
                    if (e.source != window.parent)
                        return;
                    if(e.origin != "http://127.0.0.1:8080")
                        return; 
                    console.log(e.data); //打印出传输过来的消息
                }, false);
      } 
    </script>
    

    B项目取到A项目的值之后,再通过localStorage.setItem方式去存储在自己域名下,即可成功解决localStorage跨域问题。

    相关文章

      网友评论

          本文标题:vue通过postMessage解决localStorage跨域

          本文链接:https://www.haomeiwen.com/subject/hofqnctx.html