zoukankan      html  css  js  c++  java
  • cookie共享

    现在有四个主域名的网站,需要共享cookie的invite_id

    PHP

    通过后台接口设置cookie和存储cookies,后台操作的cookie是接口域名底下的cookie【pass】

    Javascript:

    主域名a.com   b.com 【其他的域名同理】

    a.com获取到b.com底下存储的cookie;

    方法一:

    在a.com域名下的网站引入b.com域名下的js【这个js需要获取b.com的cookie,并进行存储操作】,然后在a.com可以看到b.com的cookie,进行到这一步不知道怎么获取,然后pass【备注:等找到方法再来更】

    方法二:

    使用postMessage()

    在a.com的index.html文件

    <iframe src="b.com/index.html" onload="getOtherCookie()" id="sendMessage"></iframe>
    <script type="text/javascript">
            function getOtherCookie() {
                var ifr = document.getElementById('sendMessage');
                //使用iframe的window向iframe发送message。
                ifr.contentWindow.postMessage("传值", "b.com");
                window.addEventListener('message', function (e) {
                    if(e.data && JSON.parse(e.data).invite_id){
                        /*存储cookie*/
                       setCookie('invite_id',JSON.parse(e.data).invite_id,30)
                    }else{
                        console.log(e);
                    }
                })
            }
        </script>

     在b.com的index.html文件中

    <script type="text/javascript">  
         var getCookiesCode=getCookie('invite_id')?getCookie('invite_id'):'';
            window.addEventListener('message', receiver, false);
            function receiver(e) {
               if (e.data) {
                   // 注释掉的为单次父子交互
             // var obj = {'invite_id':getCookiesCode};
                  // e.source.postMessage(JSON.stringify(obj), e.origin);
                  // console.log(e.data)
    
                    var obj = {'invite_id': getCookiesCode}
                    window.parent.postMessage(JSON.stringify(obj), e.origin)
              } else {
                 console.log(e.data);
             }
        }
      </script>
  • 相关阅读:
    C#开源实现MJPEG流传输
    EntityFramework中使用Repository装饰器
    Lambda应用设计模式
    Lambda表达式的前世今生
    那些年黑了你的微软BUG
    敏捷软件开发揭秘
    SVN previous operation has not finished
    NodeJS+Express开发web,为什么中文显示为乱码
    使用Visual Studio 调试断点不起作用的问题解决办法 调试Revit CAD 不能进入断点
    openFileDialog的Filter属性设置
  • 原文地址:https://www.cnblogs.com/liucailing/p/12725894.html
Copyright © 2011-2022 走看看