美文网首页
iframe标签嵌入页面,cookie跨域问题

iframe标签嵌入页面,cookie跨域问题

作者: demoxjl | 来源:发表于2019-10-10 09:43 被阅读0次

    在工作中第一次遇到跨域问题,iframe标签嵌入另一个系统的url,需要把后台返回的键值对存储到cookie里面,但要设置domain属性;

    我直接在代码里面写

    document.cookie = 'ecc_acc=arcsabceddsf; domain=.jianshu.com'; 

    document.cookie='acc_key=asflnsidfsif; domain=.jianshu.com';

    在本地和后台联调时,输出document.cookie设置的domain没生效,一直是10.117...我的ip;

    看到一个直接显示设置doucment.domain='.jianshu.com';结果控制台报错:无法在document上设置domain属性,‘.jianshu.com’不是‘10.117...’的后缀,突然明白了,他们不再同一个父级域名,我本地测试的url地址是10.117.xx.x:8080/spa/example,要访问的是pbs.stg.jianshu.com,设置了浏览器也不生效。

    那怎样在本地测试是否能加载要访问的网站呢?于是上网查资料,有的说要修改system32里面的hosts文件,

    修改后还是没有效果,本地启动前端代码的时候,在dev-server.js中还有个url的地址的配置,于是把这里的url地址换成测试环境的地址,本地模拟测试环境的地址,2个地址在同一个父级域下,再把要设置的cookie的域名设置为同一个父级域名,就可以加载到pbs.stg.jianshu.com的页面了。

    假如测试环境域名为:were.stg.jianshu.com;

     例如我的系统是wee-ree.jianshu.com; 嵌入的系统是icre.dbs.jianshu.com; 

    .jianshu.com是一级域名(父级域名)

    wee.ere.jianshu.com二级域名(子域名)

    wee.dfs.jianshu.com 二级域名(子域名)

    父级域名下的cookie是共享的,子域名都可以获取到cookie值,也可以设置父级域的cookie值。但是

    设置了wee.df.jianshu.com子域名下的cookie,wee.dffs.jianshu.com访问不到;

    例如我设置cookie如下

    document.cookie='username=zhangsan; domain=.jianshu.com';

    则wee.were.jianshu.com和icre.dbs.jianshu.com都可以访问这个username

    cookie设置

    cookie的domain属性涉及到用户单点登录问题 

    通常在实现单点登录的时候会经常用到这个属性,通过在父级域设置Cookie,然后在各个子级域拿到存在父级域中的Cookie值。比如刚才设置的username属性,在wee.dbs.jianshu.com下同样可以访问到,用户不用重新登录就可以拿到第一次登录进来时候的用户信息,因为这些用户信息都是存在父级域".jianshu.com"下面,其他页面同yang可以拿到。

    当我在wee.dfdf.jianshu.com这个子域名下设置: document.cookie='age=24; domain=.wee.wee.jianshu.com';这个age属性则在wee.ree.jianshu.com下是看不到的。要解决cookie的跨域问题,即把要设置的键值对放到父级域的cookie里面即可。

    相关文章

      网友评论

          本文标题:iframe标签嵌入页面,cookie跨域问题

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