【问题标题】:Modify requestvalidation in WebAPI (Azure)在 Web API (Azure) 中修改请求验证
【发布时间】:2016-09-22 18:16:40
【问题描述】:

我们有一个处理来自 Android 和 iOS 应用程序的请求的 Asp.NET web api。我们开始遇到包含查询字符串的 GET 请求的问题。像这样的 URL:http://localhost:10723/api/Locations?userId=32432-a4r2-f32r3 给出了这样的响应:

从客户端检测到有潜在危险的 Request.Path 值 (?)

经过一些调试,我看到查询字符串已经被编码,所以实际请求是http://localhost:10723/api/Locations%3FuserId=32432-a4r2-f32r3,这导致了问题。我可以对将解决此问题的应用程序进行更改,但由于这是一个正在生产中的应用程序,我急切地在 API 中寻找一个快速修复程序,以使应用程序现在可以工作。

到目前为止我所尝试的:

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

以及相关的 httpRuntime web.config 技巧。

我还编写了一个自定义请求验证器。

但一切都在告诉我,这是在页面验证和我的请求验证器被命中之前发生的事情。

【问题讨论】:

    标签: azure asp.net-web-api


    【解决方案1】:

    我可以通过在服务器上为 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多