From 2c24e234c893e3931bec15f1539a1f5d2033357d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A0=87=E7=BE=BD?= <96060102+jinyu2022@users.noreply.github.com> Date: Wed, 17 Apr 2024 07:14:23 +0000 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0CORS=E5=85=81=E8=AE=B8?= =?UTF-8?q?=E8=B7=A8=E6=BA=90=E8=AE=BF=E9=97=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 21 +++++++++++++++++++++ package.json | 1 + src/common/server/http.ts | 21 ++++++++++++--------- 3 files changed, 34 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4c1db1c..8d3a0bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "license": "ISC", "dependencies": { "compressing": "^1.10.0", + "cors": "^2.8.5", "express": "^4.18.2", "file-type": "^19.0.0", "fluent-ffmpeg": "^2.1.2", @@ -2662,6 +2663,18 @@ "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://mirrors.cloud.tencent.com/npm/create-require/-/create-require-1.1.1.tgz", @@ -5078,6 +5091,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-inspect": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", diff --git a/package.json b/package.json index ac1d66f..ecb7a94 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "license": "ISC", "dependencies": { "compressing": "^1.10.0", + "cors": "^2.8.5", "express": "^4.18.2", "file-type": "^19.0.0", "fluent-ffmpeg": "^2.1.2", diff --git a/src/common/server/http.ts b/src/common/server/http.ts index e32472c..31e4067 100644 --- a/src/common/server/http.ts +++ b/src/common/server/http.ts @@ -1,8 +1,9 @@ -import express, {Express, Request, Response} from "express"; +import express, { Express, Request, Response } from "express"; import http from "http"; -import {log} from "../utils/log"; -import {getConfigUtil} from "../config"; -import {llonebotError} from "../data"; +import cors from 'cors'; +import { log } from "../utils/log"; +import { getConfigUtil } from "../config"; +import { llonebotError } from "../data"; type RegisterHandler = (res: Response, payload: any) => Promise @@ -13,12 +14,14 @@ export abstract class HttpServerBase { constructor() { this.expressAPP = express(); - this.expressAPP.use(express.urlencoded({extended: true, limit: "5000mb"})); + // 添加 CORS 中间件 + this.expressAPP.use(cors()); + this.expressAPP.use(express.urlencoded({ extended: true, limit: "5000mb" })); this.expressAPP.use((req, res, next) => { // 兼容处理没有带content-type的请求 // log("req.headers['content-type']", req.headers['content-type']) req.headers['content-type'] = 'application/json'; - const originalJson = express.json({limit: "5000mb"}); + const originalJson = express.json({ limit: "5000mb" }); // 调用原始的express.json()处理器 originalJson(req, res, (err) => { if (err) { @@ -47,7 +50,7 @@ export abstract class HttpServerBase { } if (serverToken && clientToken != serverToken) { - return res.status(403).send(JSON.stringify({message: 'token verify failed!'})); + return res.status(403).send(JSON.stringify({ message: 'token verify failed!' })); } next(); }; @@ -95,8 +98,8 @@ export abstract class HttpServerBase { if (method == "get") { payload = req.query } - else if (req.query){ - payload = {...req.query, ...req.body} + else if (req.query) { + payload = { ...req.query, ...req.body } } log("收到http请求", url, payload); try {