入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

开发微信公众号时使用 session 立马失效的原因

创建时间:2018-03-15 投稿人: 浏览次数:209

       由于种种原因,好吧!主要也是我放假一回家就会跟在学校是两个人,在家太懒,不想学习;在校还好,会想学习。于是3月6日赶紧回校开始当初计划的1月开始要做的毕设,真的是计划赶不上变化,行胜于言啊啊啊啊!好了!废话不多说了,这次毕设做的是一个公众号,由于之前没做过所以即使功能简单的也是有点吃力,希望尽快赶完吧。做的过程问题不少,今天碰到在微信公众号服务器上设置 session 结果在本页面能取到值,在其它页面死活取不到值,真的是颠覆我以前的观念了,想了快一天也没觉哪里错了,再尝试一下,发现设置的 session 值下次会立马就失效。。。以下是百度的原因了,大致记录一下:

       我们知道,微信平台是属于被动式的应答模式,用户发送一条消息或者进行点击菜单上一个按钮,服务器收到请求后进行处理然后回应,整个过程不能超过5秒钟,结束。而要进行较复杂的需要分步骤操作的逻辑时,就需要session机制来辅助,因为我们不能要求用户像我们程序员一样在一行输入一大串参数,那样用户体验太差了,一步一步引导式的操作是最好的。

       但是因为微信的所有请求都是通过腾讯的服务器转发的,也就是说所有的请求都是从同一个服务器发来的,这样原本的session机制便失效了,就好比程序原来靠人的长相来分辨和谁在对话,然后所有人的消息都通过一个人转告时,你就无法分辨了。原本的session的识别方式好像是通过cookie,每一次会话生成一个独一无二的sessionID,浏览器的所有请求都会带上这个ID,而腾讯服务器支不支持cookie还不好说,如果不支持的话,那就相当于负责向你转告别人消息的那人是个无头幽灵。。。

       这时我们可以换个思路,因为那人在转告时会告诉你是这条消息是谁发过来的,也就是 FromUserName 参数,这是一个独一无二的openid,相当于sessionID。

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。