所以我在 ASP.NET 上使用 WebAPI 编写一个 REST 应用程序。我遇到了一个问题。
在 PHP 上,我使用 urlencode 函数导致
原始的 base64 编码字符串是
kA+1n8i00qcJPNgPUXq8YqerScbQOw5Hvb3/WubyGTc=
在通过 urlencode 运行 PHP 后,我得到:-
kA%2B1n8i00qcJPNgPUXq8YqerScbQOw5Hvb3%2FWubyGTc%3D
在这个调试之后,我检查了提琴手,确实它通过正确的 URLEncoded 字符串发送......
现在,当它到达 ASP.NET MVC WebAPI 时,我得到:-
kA+1n8i00qcJPNgPUXq8YqerScbQOw5Hvb3/WubyGTc%3
因此,看起来 WebAPI 或 MVC 正在尝试自己进行一些前行 url 解码,但是它有两个问题:-
- 它只是部分解码字符串,所以 + 和 / 符号得到正确转换,但 = 没有
- 它似乎正在从 %3D 中截断 D ,导致 %3 不是有效的 URL 字符。
有没有人遇到过这个问题?要复制它,只需创建一个 Web 应用程序
public TokenAPI Get(Guid caller, Guid id, string ip, string signature, Guid eventID)
{
}
并传入值
/api/GenerateToken?id=d9a2057c-c228-40d4-a9a9-5d7a4da4984b&caller=e1af32bb-ac84-4f45-b4d6-67f7543ffab2&ip=127.0.0.1&eventID=f6d71c3d-ef00-41e1-8dec-a3a77bdf7484&signature=kA%2B1n8i00qcJPNgPUXq8YqerScbQOw5Hvb3%2FWubyGTc%3D
然后检查签名参数,你会发现它只有部分 URLDecoded 自己......
任何指针将不胜感激