【Py】接口签名校验失败可能是由于ensure_ascii的问题

本文探讨了在客户端使用requests库与服务端基于Flask的交互中,请求签名校验失败的问题。问题源于客户端和服务端在序列化JSON数据时对ASCII编码的处理不一致。当确保非ASCII字符正确处理时,签名会因编码差异导致不匹配。解决方案是确保在签名和发送请求时使用相同的编码规则,如同时设置`ensure_ascii=False`。通过统一序列化规则,可以避免签名校验失败的问题。

项目场景:

客户端:requests
服务端:Flask

客户端发请求前对请求签名,服务端对签名进行校验


问题描述

服务端签名校验失败,即生成的签名与客户端的不一致


原因分析:

假设我们的请求体为

data = {
   
   
    "a": "你好"
}

在对字典数据进行json序列化时使用了如下代码

json.dumps(data, ensure_ascii=False)

其中的ensure_ascii参数是控制是否在序列化时使用ascii编码,默认为使用。效果就是中文字符全部变为unicode编码,这是因为中文字符不在ascii编码中。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值