浏览器session_id一直变换

浏览:6624 发布日期:2018/05/10 分类:技术分享 关键字: session
今天把本地代码搬到测试服务器,出现一个问题:浏览器的session_id一直变换,这样就导致系统取不到session数据,用户一直登陆不进系统。

问题排查过程:
1、检查session配置

session type是redis存储,登陆redis查看是否已写入;

2、登陆redis后,发现数据库中有很多条session记录,明显写成功了,但为什么session_id会一直变呢?

3、查看浏览器请求响应数据
发现浏览器请求头里面没有cookie,这样就导致每次访问,服务器端都会去创建session,session_id就一直变。

4、在入口文件index.php中指定session存放路径: ini_set('session.cookie_path', '/index');

5、检查session配置:
发现:测试环境的域名是xxxx.com,我本地的域名是bbbb.cn, 代码搬到测试环境时session的domain没及时修改。这样浏览器每次请求xxxx.com时,session.domain还是bbbb.cn,相当于跨域了,所以session_id才会一直变化。
解决:将测试环境的配置文件中session的domain改为.xxxx.com, cookie的domain改为.xxxx.com
结果:session_id不再变换,session可正常存取,用户可以正常登陆系统了。问题已解决

附上session工作原理,以便大家更明白session
最佳答案
评论( 相关
后面还有条评论,点击查看>>