因此,我正在ASP.NET上使用WebAPI編寫REST應用程序。我絆倒了一個問題。WebAPI僅部分解碼URL編碼字符串
在PHP我使用的是用urlencode功能導致
編碼字符串原來的base64通過進行urlencode運行它之後是
kA+1n8i00qcJPNgPUXq8YqerScbQOw5Hvb3/WubyGTc=
在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)
{
}
一個Web應用程序,並傳入值
/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 .. 。
任何指針將衷心感謝
呃,好的,謝謝@DarinDimitrov我會試着弄清楚接下來會發生什麼。刪除所有過濾器等等將回發任何調查結果。 – 2012-08-14 09:58:36