不同三级域名与二级域名之间互相共享Cookie

时间:2021-10-17 05:56:27

当你在项目中遇到这样一个问题,有多个站点在多个二级级域名如果要实现各域名站点下的登录状态共享,那么最简单的方法就是共享Cookie。

首先声明几个概念,域名怎么去区分

*域名:.com,.cn,.net,.org,.com.cn(一定程度上大家都默认这种情况也属于一级域名,严格意义是属于中国域名下的企业站点)

二级域名:.abc.com,.bcd.cn,.cde.net都属于二级域名

三级域名:zx.abc.com属于三级域名

如果了解了上边的域名规则加下来去设置Cookie就简单了

1.而基于名的Cookie设置是可以和三级域名共享

2.三级域名Cookie只能用于自己级子域名

一句话概括,域名设置domain属性可以在domain的子级共享cookie不能再其父级获取cookie。

给予上边的规则,在设置cookie时只需要指定domain属性即可实现共享。

例如:我们再a.loyung.com下设置一个cookie需要在b.loyung.com下访问这时为Cookie的domain属性指定值“.loyung.com”或者“loyung.com”即可。

严格意义上是设置.loyung.com如果不加前面的“.”则浏览器会为你自动添加前缀.因为这样是一个完整的二级域名

注意:这里设置domain属性为“www.loyung.com”不可以,设置*.loyung.com也是不可以。

如果是在本地调试可以按一下操作来模拟服务器环境。

1.设置host文件,路径C:\Windows\System32\drivers\etc,修改文件为 127.0.0.1 crm.loyung.com.cn bi.loyung.com.cn

2.安装本地IIS或其他Web服务端程序,建立两个本地站点分别绑定crm.loyung.com.cn和bi.loyung.com.cn两个域名

可以尝试访问站点1登录直接跳转站点2在站点2中就可以读出站点1记录的登录状态。

调试排错:

知道了上边这些,在设置完domain后可能还是得不到想要的效果,这里一定注意了。

每次设置完建议清理一下cookie,如果时在IIS等服务端挂的项目重启一下服务端。

可以通过浏览器查看Cookie的值及Domain属性来确定加载的是不是当前的设置,如果不是就按上述操作清除Cookie和重启IIS

不同三级域名与二级域名之间互相共享Cookie

按照上面操作已基本不会有啥问题了。