ThinkPHP
根据Thinkphp6手册的说明,在app\middleware.php 中开启了 Session
<?php // 全局中间件定义文件 return [ // 全局请求缓存 // \think\middleware\CheckRequestCache::class, // 多语言加载 // \think\middleware\LoadLangPack::class, // Session初始化 \think\middleware\SessionInit::class ];
但是在所有用到的Session的地方都无法正常使用(验证码、表单Token等),自己set的Session也无法get出来。
根据网上的各种搜索结果一一做了尝试,均以失败告终。最终在浏览器工具中发现了问题
因为开启了cookies的安全传输,所以在非安全连接的情况下 PHPSESSID 没有被放入本地Cookies,
问题终于找到了,是我之前手闲的去修改了 config/cookie.php 的配置文件, 重点:把secure设置为false
<?php // +---------------------------------------------------------------------- // | Cookie设置 // +---------------------------------------------------------------------- return [ // cookie 保存时间 'expire' => 0, // cookie 保存路径 'path' => '/', // cookie 有效域名 'domain' => '', // cookie 启用安全传输(就是这里,请恢复默认false即可解决) 'secure' => true, // httponly设置 'httponly' => true, // 是否使用 setcookie 'setcookie' => true, // samesite 设置,支持 'strict' 'lax' 'samesite' => '', ];
至此,困扰我2周的问题终于解决了,希望给遇到同类问题的朋友提供一个解决思路!