From 9e51a661a46f8bab5aecd51c01c42df7f8fd5eb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sun, 9 Feb 2025 12:53:10 +0800 Subject: [PATCH] fix: #761 --- src/onebot/network/http-server.ts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/onebot/network/http-server.ts b/src/onebot/network/http-server.ts index c8e9b408..010252cf 100644 --- a/src/onebot/network/http-server.ts +++ b/src/onebot/network/http-server.ts @@ -45,13 +45,30 @@ export class OB11HttpServerAdapter extends IOB11NetworkAdapter this.app = undefined; } + private isFinished(req: Request): boolean { + return req.complete; + } + + private hasbody(req: Request): boolean { + return req.headers['content-length'] !== undefined && req.headers['content-length'] !== '0'; + } + private initializeServer() { this.app = express(); this.server = http.createServer(this.app); this.app.use(cors()); this.app.use(express.urlencoded({ extended: true, limit: '5000mb' })); + this.app.use((req, res, next) => { + if (this.isFinished(req)) { + next() + return + } + if (!this.hasbody(req)) { + next() + return + } // 兼容处理没有带content-type的请求 req.headers['content-type'] = 'application/json'; let rawData = ''; @@ -98,7 +115,7 @@ export class OB11HttpServerAdapter extends IOB11NetworkAdapter if (req.method == 'get') { payload = req.query; } else if (req.query) { - payload = { ...req.query, ...req.body }; + payload = { ...req.body, ...req.query }; } if (req.path === '' || req.path === '/') { const hello = OB11Response.ok({});