【问题标题】:WebAPI only partially decoding URL Encoded stringWebAPI 仅部分解码 URL 编码字符串
【发布时间】: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


    【解决方案1】:

    我无法使用 ASP.NET MVC 4 RC 重现此问题。

    步骤:

    1. 新建一个空的 ASP.NET MVC 4 应用程序
    2. 添加 API 控制器:

      public class ValuesController : ApiController
      {
          public string Get(Guid caller, Guid id, string ip, string signature, Guid eventID)
          {
              return signature;
          }
      }
      
    3. 导航到/api/values?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

    4. 结果:

      <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">kA+1n8i00qcJPNgPUXq8YqerScbQOw5Hvb3/WubyGTc=</string>
      

    signature 参数被正确的 url 解码。

    【讨论】:

    • 呃,好的,谢谢@DarinDimitrov 我会试着弄清楚发生了什么。删除所有过滤器等将发回任何发现。
    猜你喜欢
    • 1970-01-01
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 2012-07-05
    • 1970-01-01
    相关资源
    最近更新 更多