最终解决方案:
经过排查,发现问题是,调用获取事件列表接口,有个字段为图片,返回的为空字符串,手机端未做判断,强行加载图片,导致PHPSESSID发生变化,服务端主动清空cookie,用户信息失效,TOKEN验证失败,解决办法,手机端判断,图片字段如果为空,则不加载。
解决问题过程描述:
1).TOKEN失效,首先想到的是session_id发生变化,有跨域请求,于是,在登录接口、模块B对应接口、模块C对应接口、模块D对应接口、事件办理接口E打印session_id已经相关的session信息,结果是登录接口、模块B对应接口、模块C对应接口、模块D对应接口session_id值、相关的session信息均正常,值一致,但是接口E,session_id值、相关的session信息均为空
2).根据1)的结果,判断并没有发生跨域请求,猜测应该是手机端做某个操作时候,触发服务端session验证函数,清空了session,于是服务端session验证接口打印日志信息,结果显示,手机端连续操作过程中,某个时间节点,PHPSESSID发生变化,cookie被清除,但是具体什么操作,还是无法辨别出来
3).综合1)、2)的情况,分析可能手机端做了清除cookie的操作,仔细排查并没有
4).本来没办法了,但是和手机端同事沟通过程中,了解到他们处理图片资源时候,有时候不管资源是否存在,都会加载资源,于是想到如果图片路径为空,手机端未做判断,强行加载图片,相当于直接访问一次:http://ip:port, http://ip:port 该接口默认重定向到PC后台首页,而且该接口有做session验证,判断session_id() 与$_COOKIE['PHPSESSID'] 是否相等,如果不相等,则清除所有cookie,并退出,手机端初次登录,会生成PHPSESSID1,进入事件详情页面,强行加载空图片,会生成PHPSESSID2,因为PHPSESSID1 != PHPSESSID2,故cookie被清空,保存在session中的用户信息也被清空,所以调用接口E,一直提示TOKEN失效,到此,问题才水落石出!