修改WebAPI(Azure)中的请求验证

时间:2016-09-22 10:10:51

标签: azure asp.net-web-api

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

  

从客户端(?)

检测到潜在危险的Request.Path值

经过一些调试后,我发现查询字符串已被编码,因此实际请求为http://localhost:10723/api/Locations%3FuserId=32432-a4r2-f32r3,这导致了问题。我可以对可以解决此问题的应用程序进行更改,但由于这是一个现在正在制作的应用程序,我正在拼命寻找API中的快速修复程序,以便应用程序立即运行。

到目前为止我尝试过:

grunt.initConfig({
    "concat-json": {
        "en": {
            src: ["reports/*.json"],
            dest: "reports/request.json"
        },
        "de": {
            src: ["reports/temp/*.json", "!reports/temp/not-me.json"],
            dest: "reports/request.json"
        }
    } 
});

相关的httpRuntime web.config技巧。

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

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

1 个答案:

答案 0 :(得分: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>