【发布时间】:2012-08-13 19:06:17
【问题描述】:
所以我正在使用 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 自己......
任何指点将不胜感激
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-4 asp.net-web-api