WebAPI.請求(Request)的參數(Parameter)里包含特殊字符(#等)的正確處理方式 從客戶端xx中檢測到有潛在危險的Request.Form值


 

 

事故現場

報錯"從客戶端 中檢測到有潛在危險的Request.Form值"

//后台代碼
namespace Test
{
    [RoutePrefix("TestClass")]
    [EnableCors("*", "*", "*")]
    public class TestClassController
    {
 
        [HttpGet]
        [Route("GetByName/{userId}/{userName}")]
 
        public string GetByName(int userId ,string userName ="")
        {
            return null;
        }
    }
}
 
//前台代碼
 //注意userName含有特殊符號
$.ajax({url:" http://api.test.com/TestClass/GetByName/0/ encodeURIComponent(':#@#')",async:false});
 

解決方案.Mine

修改為

總結.

1.如果請求(Request)的參數(Parameter)里包含特殊字符,記得將參數值編碼
encodeURIComponent(SPECIAL_VALUE) 
2.如果含有特殊符號的,比如":",你放到了路徑上,
你編碼應該也不好使.那就將含有特殊符號的,別放到路徑上,
可以放到?的參數上進行傳遞...

 

解決方案.Other

可以通過將驗證模式設置為ASP.NET之前的版本。
具體步驟是在web.config中加入以下配置:

<httpRuntime requestValidationMode=”2.0″ />

設置了請求模式后,再設置

<system.web>
<pages validaterequest=”false”/>
</system.web>
 
MVC框架中,在控制方法前加入:

[ValidateInput(false)]屬性。

 

 

擴展:

.NET Web API 路由與URL的困惑...(如果將參數放到路徑上,例如:http://www.baidu.com/getById/1,那么這個"1"是參數還是路徑呢?)我還專門去搜了下URL組成部分...

 

參考:

1.解決“檢測到有潛在危險的Request.Form值”

2.請求(Request)的參數(Parameter)里包含特殊字符(#等)的正確處理方式

 

 

x


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM