gpt4 book ai didi

c# - WebAPI 仅部分解码 URL 编码字符串

转载 作者:太空宇宙 更新时间:2023-11-03 16:27:56 24 4
gpt4 key购买 nike

所以我正在 ASP.NET 上使用 WebAPI 编写一个 REST 应用程序。我遇到了一个问题。

在 PHP 上,我使用的是 urlencode 函数,结果是

原始base64编码后的字符串是

kA+1n8i00qcJPNgPUXq8YqerScbQOw5Hvb3/WubyGTc=

在通过 urlencode 运行 PHP 后,我得到:-kA%2B1n8i00qcJPNgPUXq8YqerScbQOw5Hvb3%2FWubyGTc%3D

在调试之后,我检查了 fiddler,确实它通过正确的 URLEncoded 字符串发送...

现在,当涉及到 ASP.NET MVC WebAPI 时,我得到:-

kA+1n8i00qcJPNgPUXq8YqerScbQOw5Hvb3/WubyGTc%3

所以看起来 WebAPI 或 MVC 正在尝试自己进行一些前行 url 解码,但是它有两个问题:-

  • 它只是部分解码字符串,所以 + 和/符号被正确转换,但 = 没有
  • 它似乎从 %3D 中截断了 D,这导致 %3 不是有效的 URL 字符。

有没有人遇到过这个问题?要复制它,只需使用

创建一个网络应用程序
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-8k%Asign-a3 2B1n8i00qcJPNgPUXq8YqerScbQOw5Hvb3%2FWubyGTc%3D

然后检查签名参数,你会发现它只有部分 URLDecoded 自己......

不胜感激任何指点

最佳答案

我无法使用 ASP.NET MVC 4 RC 重现此内容。

步骤:

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

    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-dec41e1-8 -a3a77bdf7484&signature=kA%2B1n8i00qcJPNgPUXq8YqerScbQOw5Hvb3%2FWubyGTc%3D

  4. 结果:

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

signature 参数已正确进行 url 解码。

关于c# - WebAPI 仅部分解码 URL 编码字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11940665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com