fix: 加密中间件对GET请求空body返回400的问题

This commit is contained in:
Trae AI
2026-06-21 16:22:05 +08:00
parent 69d7b71995
commit 0a7392f30d
+28 -25
View File
@@ -46,33 +46,36 @@ func (cm *CryptoMiddleware) ProcessRequest() gin.HandlerFunc {
return return
} }
var req interface{} // 空请求体(如 GET 请求),跳过解析,直接放行
if err := json.Unmarshal(body, &req); err != nil { if len(body) > 0 {
c.JSON(400, gin.H{"code": 400, "message": "解析请求体失败"}) var req interface{}
c.Abort() if err := json.Unmarshal(body, &req); err != nil {
return c.JSON(400, gin.H{"code": 400, "message": "解析请求体失败"})
} c.Abort()
return
}
reqMap, ok := req.(map[string]interface{}) reqMap, ok := req.(map[string]interface{})
if ok { if ok {
if encryptedData, exists := reqMap["data"]; exists { if encryptedData, exists := reqMap["data"]; exists {
if dataStr, ok := encryptedData.(string); ok { if dataStr, ok := encryptedData.(string); ok {
decrypted, err := cm.cryptoManager.Decrypt(dataStr) decrypted, err := cm.cryptoManager.Decrypt(dataStr)
if err != nil { if err != nil {
c.JSON(400, gin.H{"code": 400, "message": "解密失败: " + err.Error()}) c.JSON(400, gin.H{"code": 400, "message": "解密失败: " + err.Error()})
c.Abort() c.Abort()
return return
}
var decryptedData interface{}
if err := json.Unmarshal([]byte(decrypted), &decryptedData); err != nil {
c.JSON(400, gin.H{"code": 400, "message": "解析解密数据失败"})
c.Abort()
return
}
c.Set("decrypted_data", decryptedData)
c.Set("is_encrypted", true)
} }
var decryptedData interface{}
if err := json.Unmarshal([]byte(decrypted), &decryptedData); err != nil {
c.JSON(400, gin.H{"code": 400, "message": "解析解密数据失败"})
c.Abort()
return
}
c.Set("decrypted_data", decryptedData)
c.Set("is_encrypted", true)
} }
} }
} }