From 0a7392f30dad880ef7a51e686171c87e30e4fc2a Mon Sep 17 00:00:00 2001 From: Trae AI Date: Sun, 21 Jun 2026 16:22:05 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=8A=A0=E5=AF=86=E4=B8=AD=E9=97=B4?= =?UTF-8?q?=E4=BB=B6=E5=AF=B9GET=E8=AF=B7=E6=B1=82=E7=A9=BAbody=E8=BF=94?= =?UTF-8?q?=E5=9B=9E400=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/internal/middleware/crypto.go | 53 ++++++++++++++------------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/backend/internal/middleware/crypto.go b/backend/internal/middleware/crypto.go index 6165ce6..5932e78 100644 --- a/backend/internal/middleware/crypto.go +++ b/backend/internal/middleware/crypto.go @@ -46,33 +46,36 @@ func (cm *CryptoMiddleware) ProcessRequest() gin.HandlerFunc { return } - var req interface{} - if err := json.Unmarshal(body, &req); err != nil { - c.JSON(400, gin.H{"code": 400, "message": "解析请求体失败"}) - c.Abort() - return - } + // 空请求体(如 GET 请求),跳过解析,直接放行 + if len(body) > 0 { + var req interface{} + if err := json.Unmarshal(body, &req); err != nil { + c.JSON(400, gin.H{"code": 400, "message": "解析请求体失败"}) + c.Abort() + return + } - reqMap, ok := req.(map[string]interface{}) - if ok { - if encryptedData, exists := reqMap["data"]; exists { - if dataStr, ok := encryptedData.(string); ok { - decrypted, err := cm.cryptoManager.Decrypt(dataStr) - if err != nil { - c.JSON(400, gin.H{"code": 400, "message": "解密失败: " + err.Error()}) - c.Abort() - return + reqMap, ok := req.(map[string]interface{}) + if ok { + if encryptedData, exists := reqMap["data"]; exists { + if dataStr, ok := encryptedData.(string); ok { + decrypted, err := cm.cryptoManager.Decrypt(dataStr) + if err != nil { + c.JSON(400, gin.H{"code": 400, "message": "解密失败: " + err.Error()}) + c.Abort() + 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) } } }