2016-09-22 1 views
0

AndroidおよびiOSアプリケーションからのリクエストを処理するAsp.NET Web APIがあります。クエリ文字列を含むGETリクエストに関する問題が発生し始めました。 http://localhost:10723/api/Locations?userId=32432-a4r2-f32r3はこの応答を与えた:WebAPI(Azure)のrequestvalidationを変更します

潜在的に危険なRequest.Path値がクライアントから検出された

私は、クエリ文字列は、符号化されていたことを見たいくつかのデバッグした後、そう(?)、このようなURL実際のリクエストは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> 
関連する問題