我的报错场景
在【微信小程序】开发中 加密数据解密算法 报错,后来经过排查发现是由于session_key(‘1744eFm+jcmxMOKxMw==’)中存在特殊符号‘+’,后端接收到的参数为‘1744eFm jcmxMOKxMw==’,前后不一致,导致解密报错
解决办法
前端使用encodeURIComponent(key)对key进行编码,后端decodeURIComponent(key),这样就能拿到完整的数据
顺便说一下encodeURI与encodeURIComponent的区别
encodeURI 该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#
encodeURIComponent “; / ? : @ & = + $ , #”,这些在encodeURI()中不被编码的符号,在encodeURIComponent()中统统会被编码。至于具体的编码方法,两者是一样。