Skip to content

【javascript】解决由于参数编码问题导致服务端报500 【如:微信小程序 session_key 加密数据解密算法 报错】 #2

@AwesomeDevin

Description

@AwesomeDevin

我的报错场景

在【微信小程序】开发中 加密数据解密算法 报错,后来经过排查发现是由于session_key('1744eFm+jcmxMOKxMw==')中存在特殊符号'+',后端接收到的参数为'1744eFm jcmxMOKxMw==',前后不一致,导致解密报错
这里写图片描述

解决办法

前端使用encodeURIComponent(key)对key进行编码,后端decodeURIComponent(key),这样就能拿到完整的数据

顺便说一下encodeURI与encodeURIComponent的区别

encodeURI 该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#

encodeURIComponent “; / ? : @ & = + $ , #”,这些在encodeURI()中不被编码的符号,在encodeURIComponent()中统统会被编码。至于具体的编码方法,两者是一样。

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions