背景
最近做了个项目,大致流程是这样的:微信中打开A页面,判断是否登陆,未登录的话跳转至微信授权并设置登陆cookie信息,然后重定向回A页面。QA提了个bug,打开页面后一直在授权地址和A页面之间循环跳转。上去找QA看了下现场,发现确实是这样,而且只有iPhone 6 plus会这样,其他机型正常,捕获了授权链接等等也都是没有问题。让QA把链接发我就灰溜溜的下楼了……然而,下楼的过程中,灵光一闪突然想到了日期的问题(有时候找bug真的要看运气,要是没想到时间问题,真的不知道要耗多长时间……),会不会是那台机器时间设置有问题?立马问了QA,果然,时间设置到了2018年3月1号……一切都真相大白了。
原因
原因很简单,授权完毕后设置登陆信息cookie,过期时间是按照服务器的正常时间进行设置的,而那台机器的系统时间设置到了2018年的3月1号,因此会导致cookie信息过期,从而一直在授权页面之间跳转。
复现
本着负责的态度,打算写个demo验证下上述现象。
1.服务端代码
服务端代码很简单,就是设置cookie而已。
if (!isset($_COOKIE['name'])){
setCookie('name','111111',time()+300,'/');
}
var_dump($_COOKIE);
2.客户端表现
设置系统时间为一个月之后,然后访问localhost/cookie.php,输出如下&#x