問題描述:
針對"http://...?name=&age=”這樣的請求,使用Request.Form和Request.QueryString方法接收數據,會出現:從客戶端(....)中檢測到有潛在危險值...的錯誤提示。
問題原因:
由於在asp.net中,Request提交時出現有html代碼或javascript等字符串時,程序系統會認爲其具有潛在危險的值。環境配置會報出“從客戶端 中檢測到有潛在危險值”這樣的Error。
解決方案:
方案1:
(1)在配置文件中加入:
<httpRuntime requestValidationMode="2.0"/>
(2)在.aspx頁面中加入:
<%@ Page ValidateRequest="false" …
方案2:
原因是所傳值含有特殊危險符號,那麼可以在傳前,利用HttpUtility.HtmlEncode(string)方法,對字符串進行編碼,這樣就會將危險字符轉義爲普通的字符。如string param=Server.HtmlEncode(str);
建議使用方案1。
在方案2總,如果傳遞的內容包括&等這樣的特殊符號,傳輸數據會丟失。
下面針對傳輸特殊字符做下總結:
特殊字符 | HttpUtility.UrlEncode | HttpUtility.HtmlEncode |
= | %3d | = |
< | %3c | < |
& | %26 | & |