辛星浅析跨域时的session共享问题

      最近几天一直在忙一件事,弄的我现在满脑子都是"跨域"、“session"、”共享"等等的词汇,于是,也就简单总结一下自己的理解。

        比如我们的这个项目,online是在线的二级域名,game是游戏的二级域名,我们需要在这两个域名下共享session,虽然这两个也需要跨域,但是由于这只是一个比较简单的跨域,我们可以在配置文件中设置一下让存储session的cookie的domain设置为一级域名即可,比如我们想让它们在www.xinxingjiaocheng.com这个里面存储domain,我们可以操作如下: 

       ini_set("session.cookie_domain",'www.xinxingjiaocheng.com');

     我们这里是通过设置cookie来进行操作的,此时我们的操作特别简单,因为我们是通过设置cookie来简介的设置session,也就是说,我们这里实际上共享的是cookie。

     

      然后来说说session是由谁实现的吧,我们的session是由服务器实现的,可以是Apache,可以是Nginx,可以是tomcat,那么它们之间都遵循类似的规律,首先从url中查找是否有对应的表示sessionid的东西,然后从cookie中找到是否有对应的表示sessionid的东西,而且cookie中的内容始终会覆盖url中的内容。

     

       因此,对应的各种实现方案就出来了,第一种是通过获取表示session的id,比如PHP有一个函数叫做session_id()可以获取或者设置sessionid,我们通过控制这个id来获取存储的session的值,我们可以把它存储到数据库中,或者通过url来传递,或者写入到cookie中。


      当然,基于这种考虑,我们可以在两个服务器上,当我们存储到一个redis里面的时候,因为它们引用的是同一个id,因此可以实现多个服务器的session共享,即使它们的域名没有什么实际关系。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值