2016-09-22 20 views
0

我們有一個處理來自Android和iOS應用程序的請求的Asp.NET web api。我們開始遇到包含查詢字符串的GET請求的問題。像這樣的URL:http://localhost:10723/api/Locations?userId=32432-a4r2-f32r3了這種反應:(?)從客戶端檢測到在WebAPI(Azure)中修改requestvalidation

有潛在危險的Request的值

一些調試,我看到查詢字符串已經被編碼後,使實際請求是http://localhost:10723/api/Locations%3FuserId=32432-a4r2-f32r3,並導致此問題。我可以修改應用程序來解決這個問題,但是因爲這是一個現在正在生產的應用程序,所以我正在拼命尋找API的快速修復方法,以便現在可以使用這些應用程序。

我迄今爲止嘗試:

<httpRuntime targetFramework="4.5.1" requestValidationMode="2.0" /> 
<pages validateRequest="false" /> 

及相關的httpRuntime web.config中的技巧。

我也寫了一個自定義請求驗證器。

但一切都告訴我,這是發生在頁面驗證和我的請求驗證器被擊中之前發生的事情。

回答

0

我能夠在服務器上添加一個重寫規則URL來解決這個問題:

<system.webServer> 
    <rewrite> 
    <rules> 
     <rule name="Allowing querystrings."> 
     <match url="^(.*)\?(.*)$" /> 
     <conditions logicalGrouping="MatchAny" /> 
     <action type="Rewrite" url="{R:1}?{R:2}" /> 
     </rule> 
    </rules> 
    </rewrite> 
    </system.webServer> 
相關問題