微信小程序开发-服务端session值取不到;小程序res.header['Set-Cookie']隐藏的坑

微信小程序开发-服务端session值取不到;小程序res.header['Set-Cookie']隐藏的坑,第1张

问题:本地服务器存取session没有问题。通过小程序,比如发验证码,服务器端将验证码存为session。校验验证码的时候重新取session,提示session值不存在。
根源:微信小程序不能保存Cookie,导致每次wxrequest到服务端都会创建一个新的会话,从而当前会话不再是之前存验证码的那个会话,自然也就取不到session值了。
解决方法:(由于本人很懒,直接参考、引用大神的文章,文末有原文链接,原文板块比较好看一点。我这里重点在于记录微信小程序的另一个坑。)
普通的Web开发,都是把sessionid保存在cookie中传递的。
不管是java还是php,服务端的会在response的header中加上Set-Cookie
例如:
浏览器的请求也会在header中加上
例如:
通过这个sessionid就能使浏览器端和服务端保持会话,使浏览器端保持登录状态。但是,微信小程序不能保存Cookie,导致每次wxrequest到服务端都会创建一个新的会话,小程序端就不能保持登录状态了。
一个比较简单的办法就是在小程序端把cookie保存到storage里,后续请求的时候再读storage,把cookie添加到请求头里,这样做的好处就是,服务端不用做任何改动
具体 *** 作如下:
1把服务端response的Set-Cookie中的值保存到Storage中
2wxrequest再从Storage中取出Cookie,封装到header中
我在这里还遇到了另外一个问题,当服务器响应多个Set-Cookie时,小程序通过wxrequest 回调取resheader['Set-Cookie']所取到的Set-Cookie值是把它们用逗号拼接在一起,从而产生的错误的Cookie,这样请求后台的时候还是取不到相应的session。而真正需要的是用分号拼接多个Set-Cookie值。例如:
服务器响应:
小程序通过resheader['Set-Cookie']取到的Set-Cookie值却是:
而真正正确的值应该是smallapp与session_name之间用分号隔开而不是逗号:
但坑终究是坑,寄人篱下,有坑也只得我们自己填。
填坑方法:在步骤2中的if判断中,自己重新拆分Storage中取出的Cookie,整理成后端需要的规范的cookie。再赋值给headerCookie。
这个问题暂时没找到其他解决方案,也请知道的朋友指点一下。
原文引用: 微信小程序开发-保存服务端sessionid的方法
链接:>从如下几种跳转模式的比较可以看出,你这个功能用直接的方式实现不了,因为A和B建立不了关联,这种模式最好还是用同域的模式,如果不能保证同域,那么另外一种方式就是A跳转的时候直接携带用户名和密码来验证,这样对于户体验来说是没什么区别的
1 responseredirect 这个跳转页面的方法跳转的速度不快,因为它要走2个来回(2次postback),但他可以跳 转到任何页面,没有站点页面限制(即可以由雅虎跳到新浪),同时不能跳过登录保护。但速度慢是其最大缺陷!redirect跳转机制:首先是发送一个>小程序数据存放的位置是:

1、小程序数据存放在哪里是分情况的,对于短生命周期数据存储来说,主要是以小程序启动到彻底关闭为周期的数据,会存储在appjs文件夹中。

2、而对于长生命周期或者隐私数据存储来说,小程序关闭后即便再重启数据依旧会存在的,或者说涉及到用户的隐私信息并且需要重复使用,因此数据是存数在本地缓存的。

3、对于动态信息或配置信息存储来说,这种小程序是需要保存用户的配置信息的,而且在用户更换了手机之后也是能够迅速完成配置同步的,因此数据是保存在后端服务器中的。

资料拓展:2016年1月11日,2016微信公开课PRO版在广州举行,“微信之父”张小龙首次公开演讲,宣布微信公众号将推出“应用号”,通过公众号完成一些App的部分功能。2016年11月3日晚间,微信团队宣布:微信小程序正式开放公测。

1、首先在 indexjs中想写逻辑代码。

2、其中page里面的data里面是前台展示时的一些数据,而onload里面是调用的接口。

3、调用的方式为get调用,返回的数据存在res里面。

4、返回的数据,而data中就是我们需要的数据。

5、data:一个入参。method:请求方式,如果是POST请求必须按上面写,默认是get请求,不用处理。complete:页面请求完成后的方法,通过thatsetData将数据传递给WXML页面。success:页面加载成功后的执行方法。

1、小程序是一种功能强大的软件,可以帮助用户实现许多功能,例如查询、决策、报告等;而表格文件仅仅是一种报表文件,只能用于显示和管理数据。
2、小程序可以实时获取和处理服务器上的数据,而表格文件只能通过用户自行手动输入,或从其他软件中导入数据。
3、小程序框架可以支持多种语言和技术,更加灵活;而表格文件只支持特定的格式,局限性更大。
4、小程序可以实现远程访问和控制,可以支持多种设备;而表格文件只能单机使用,不能实现远程访问和控制。

经常看到有点的小伙伴在群里问小程序用户数据解密流程,所以打算写一篇关于小程序用户敏感数据解密教程;

加密过程微信服务器完成,解密过程在小程序和自身服务器完成,即由 encryptData 得到如下数据:

准备知识:

以上3点对于理解解密流程非常重要

根据官方文档,我梳理了大致的解密流程,如下:

重点在6、7、8三个环节。
AES解密三个参数:

服务端解密流程:

下面结合小程序实例说明解密流程:

最后的效果如下:

如果你的小程序没有绑定微信开放平台,解密的数据中不包含unionid参数
小程序绑定微信开放平台连接

从解密的数据看,算得上敏感的数据只有appid;个人觉得openid不是敏感数据,每个用户针对每个公众号会产生一个安全的openid;openid只有在appid的作用域下可用。除非你的appid也泄露了。

那么可以从解密数据得到appid,微信小程序团队是何用意呢?还是前面那句话,openid脱离了appid就什么都不是,openid和appid一起为了方便小程序开发者做到不同小程序应用之间用户区分和隔离,同时能够将微信用户体系与第三方业务体系结合。

所以我认为敏感数据解密的主要用处不是解密后回传给客户端,而是在服务端将微信用户信息融入到自身业务当中。

支持的后端开发语言有:
其实理论上后端用什么语言都可以,只要能够从服务器上获取到数据,例如:PHP、Java或者Python来开发。一般对于企业而言,都是采用php程序开发微信小程序;技术要求高一点的可以采用java程序开发。小程序开发底价
想要了解更多有关小程序开发的相关信息,推荐咨询猪八戒网。猪八戒网成立于2006年,是中国领先的企业服务平台,服务交易独角兽企业。猪八戒网现有注册用户2800万、在全国布局线下数字化创业园区超过100个。十余年来,累计有10万余个人通过平台孵化成长为公司,超过100万人通过平台实现灵活就业,千万企业通过平台解决专业服务需求;专业性值得选择。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13180863.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-16
下一篇 2023-06-16

发表评论

登录后才能评论

评论列表(0条)

保存