首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Spring MVC 參數含 % 號導致 400 錯誤解決:URLEncode 編碼

     編輯:程式設計綜合問答

現象

請求參數包含 % 字符時,Tomcat/Spring MVC 直接報 400 Bad Request,日誌顯示 Invalid character found in the request target。

原因

% 在 URL 中為編碼前綴(如 %20 代表空格)。單獨出現 % 且後跟非十六進制字符,違反 RFC 3986,容器拒絕解析。

解決方案

  1. 前端編碼:JS 使用 encodeURIComponent(param) 發送請求。
  2. 後端解碼:Spring MVC 自動調用 URLDecoder.decode,無需手動處理。
  3. Tomcat 寬鬆模式(不推薦):server.xml 添加 relaxedQueryChars="%",但會降低安全性。

代碼示例

// 前端
fetch('/api?param=' + encodeURIComponent('100%'))

@Controller
@GetMapping("/api")
public String api(@RequestParam String param) {
    // param 自動解碼為 "100%"
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved