发送GET请求时谨慎使用base64数据

在调用第三方接口时,有时会遇到签名错误的提示。经过排查后,发现问题的原因是在使用GET请求方式时,参数内容中的签名值(sign)是以Base64格式编码的,其中包含了加号(+)符号。然而,服务端接收到请求后,加号被错误地解析为空格,导致签名值的比对不一致。

在这里插入图片描述

请求值

+QRuK23T1SfyXqUHRg2kPCg+bR7cuqvBL0Nawc9AdZw=

服务端接收值

 QRuK23T1SfyXqUHRg2kPCg bR7cuqvBL0Nawc9AdZw=

解决方法

在发送GET请求前,将参数进行URL编码, Encode后的值

%2BQRuK23T1SfyXqUHRg2kPCg%2BbR7cuqvBL0Nawc9AdZw%3D

服务端接收并解码

+QRuK23T1SfyXqUHRg2kPCg+bR7cuqvBL0Nawc9AdZw=

URL 中的特殊符号

在 URL(统一资源定位符)中,某些字符具有特殊含义或保留目的。为了在 URL 中包含这些字符而不引起混淆或歧义,需要使用特定的格式对它们进行编码,这种格式称为 URL 编码。以下是 URL 中的一些特殊字符:

保留字符

冒号(:)
正斜杠(/)
问号(?)
井号或哈希符号(#)
和号(&)
等号(=)
加号(+)

非安全字符

空格( )- 通常表示为加号(+)或百分号编码为 %20。
小于号(<)和大于号(>)
双引号(")
百分号(%)
左大括号({)和右大括号(})
管道符(|)
反斜杠(\)
插入符号(^)
波浪号(~)
左方括号([)和右方括号(])
重音符号或开音符号(`)
左圆括号(()和右圆括号())

URL 编码

保留字符和非安全字符,以及任何非 ASCII 字符,在 URL 中进行百分号编码。编码格式将特殊字符替换为百分号(%)后跟其 ASCII 值的两位十六进制表示。例如,空格被编码为 %20,加号(+)被编码为 %2B。

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值