我们有一个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技巧。
我还写了一个自定义请求验证器。
但是一切都告诉我,这是在页面验证和我的请求验证器被命中之前发生的事情。
答案 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>