首先,明确以下概念
session与cookie都是为了解决http协议无状态而诞生的,由客户端浏览器保存记录一些请求信息,下次再去发http请求的时候,把记录在浏览器中的cookie读取出,发到服务器上。 session是在服务器端也对应保存一份信息,当下次发http请求时根据cookie带来的session ID去读取到这部分信息。
遇到问题,session id的生成,一般根据浏览器、域名等生成,所以,遇到诸如 xx.hot-tea.cm 与xxx.xxx.hot-tea.cn 如果session记录是在xx.hot-tea.cn时,正常 去xxx.xxx.hot-tea.cn是拿去不到这个session的,应该session ID的不同。
解决办法:
1、修改php.ini
找到 session.cookie_domain = .youdomain.com //将.youdomain.com配置为你的二级域名
2、在项目最开始的地方初始化配置session域
ini_set('session.cookie_domain',"..youdomain.com");//跨域访问Session
查看浏览器获取session的id 可以看到,两个域名的id一致
以上,二级域名下的子域名既可以共享session.