我怀疑。关于一个特定字符串的Base64编码。
我们有一个应用程序允许在基本身份验证类型的授权成功后执行REST WebServices。
我已为用户 USER_NAME 设置了密码 CP @ 5N0v22nD17RrV8f4 的密码。
在我的系统中,使用Postman / Advanced REST客户端,成功处理发送的请求。但是当大多数其他系统使用相同的REST客户端时,相同的请求失败。
当我将此密码设置为其他用户时,该用户凭据面临同样的问题。
我注意到Base64编码输出字符集是个问题。但是没有方法可以在REST客户端中更改它(不在大多数现成的中)。
但为什么这只发生在这个特定的密码上。我检查所有其他密码,它工作正常。
字符串: USER_NAME:CP @ 5N0v22nD17RrV8f4
UTF-8: VVNFUl9OQU1FOkNQQDVOMHYyMm5EMTdSclY4ZjTigIs =
Windows-1252: VVNFUl9OQU1FOkNQQDVOMHYyMm5EMTdSclY4ZjQ =
ASCII: VVNFUl9OQU1FOkNQQDVOMHYyMm5EMTdSclY4ZjQ =
仅适用于 CP @ 5N0v22nD17RrV8f4 ,Base64中的UTF-8输出字符集编码会产生不同的结果。
使用任何其他密码,所有输出都是相同的。
请让我理解为什么 CP @ 5N0v22nD17RrV8f4 与其他字符串不同。
在此先感谢您
巴鲁
答案 0 :(得分:1)
字符串在字符串的末尾有一个non breaking space。
我使用以下步骤测试了这一点。
解码UTF-8字符串VVNFUl9OQU1FOkNQQDVOMHYyMm5EMTdSclY4ZjTigIs = https://www.base64decode.org/
将结果复制到https://www.base64decode.org/的UTF-8编码,但这次在字符串末尾按了一次退格键。给我输出VVNFUl9OQU1FOkNQQDVOMHYyMm5EMTdSclY4ZjQ =
您也可以尝试手动输入字符和编码。