繁体   English   中英

会话cookie通过PHP / Apache服务器从Chrome中消失

[英]Session cookies disappearing from Chrome with PHP/Apache server

更新:看起来几天前开始的问题是由于错误处理cookie“安全”标志。 我们仍然没有解决2月1日开始的问题。

我在我工作的地方运行一个内部PHP / Apache站点。 2月1日,我们开始收到有关员工每天随机退出几次的报告。 我们多年来没有更改任何身份验证代码,但我们注意到Chrome当天收到了重大更新: https//chromereleases.googleblog.com/2017/02/stable-channel-update-for-desktop.html

在过去的几天里,问题变得更加严重,Chrome根本没有为某些用户存储会话cookie。 导航到站点后,服务器尝试设置cookie,并将员工重定向到Google进行身份验证,然后当他们返回站点时,他们的cookie就消失了。

我用这个简单的php文件中的最小代码重现了这个问题:

<?php

session_set_cookie_params(60 * 60 * 24 * 7, '/', '.corp.company.com', false, true);
session_name('CompanySessionID');
session_start();
$_SESSION['UserName'] = 'test';

当受影响的员工访问该页面时,设置的Cookie标头会按预期显示,但Chrome不会存储该Cookie。

额外细节:

  • 我已经尝试了重定向后PHP会话丢失的所有建议
  • 最初问题并没有影响隐身模式,但是几天前就开始了
  • 清除缓存/ cookie从来没有帮助过这个问题
  • 之前重新安装Chrome会解决问题大约一周
  • Firefox或Safari中不存在此问题
  • 并非所有员工都受到影响
  • 所有员工都使用OS X.
  • 将会话名称从CompanySessionID更改为CompanySession修复了一部分用户的问题,并为另一个用户子集打破了该问题
  • 会话仍在服务器上,它只是浏览器中缺少的cookie
  • 使用代理来观察请求我可以看到没有应该删除cookie的标头。
  • 我们使用的是PHP 5.4.24

我怎样才能找到这个问题的根源? 我应该向Chrome提交错误吗?

我在@cmorrissey的帮助下找出了最近的问题。 我们最近向服务器推出了HTTPS,当人们通过HTTPS获得新的cookie时,他们会获得安全标志设置。

之后,将不再通过HTTP发送cookie(如预期的那样)。 然而,出乎意料的是,Chrome也不再允许服务器设置具有相同名称的不安全会话cookie,因为已存在安全cookie。 这就是为什么问题中显示的示例PHP文件根本无法设置cookie,除非会话名称发生更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM