事件描述
本地开发,使用到了cookie,于是就用了CI框架的 set_cookie() 方法,但是用的过程中手贱把 $secure 参数值设置成了 TRUE,于是cookie一直设置不成功。。。
需要注意的3点
- 参数 $secure 如果设置成 TRUE 时,只能通过HTTPS传输才能正确的设置cookie。
这一点,在CI的文档中并没有详细说明,只是在参数介绍中有英文的说明(见上图)
但是,分析CI的代码发现,CI中的 set_cookie() 方法,最终调用的是PHP的
setcookie() 方法,手册中对每个参数有详细的介绍(又一次提醒我,一定要仔细看文档啊!!!)
如果线上为HTTPS,而本地为HTTP,那么可以这样来解决
- 参数 domain 的设置
手册的介绍是这样的:
其中标注的语句很容易忽略,CI的文档中有补充和举例说明 链接跳转
如果需要设置一个全站范围内的 COOKIE ,而不关心用户是如何访问你的站点的, 可以
将 domain 参数设置为你的 URL 前面以句点开头,如:.your-domain.com
- 参数 expire 需要注意
expire表示cookie的过期时间,但是,CI中 set_cookie() 方法和PHP中的 setcookie() 方法中的值却不同,CI中需要传入 以秒为单位的剩余时间 ,PHP中需要传入 剩余时间的时间戳