perf: Assistant cors config

This commit is contained in:
fit2cloud-chenyw
2025-08-07 17:40:12 +08:00
parent 0082bd71ee
commit b7c2b0bc93
3 changed files with 26 additions and 2 deletions
+2 -1
View File
@@ -12,6 +12,7 @@ from common.core.sqlbot_cache import clear_cache
from common.utils.time import get_timestamp
from starlette.middleware.cors import CORSMiddleware
from common.core.config import settings
from common.utils.utils import get_origin_from_referer
router = APIRouter(tags=["system/assistant"], prefix="/system/assistant")
@router.get("/info/{id}")
@@ -23,7 +24,7 @@ async def info(request: Request, response: Response, session: SessionDep, trans:
raise RuntimeError(f"assistant application not exist")
db_model = AssistantModel.model_validate(db_model)
response.headers["Access-Control-Allow-Origin"] = db_model.domain
origin = request.headers.get("origin") or request.headers.get("referer")
origin = request.headers.get("origin") or get_origin_from_referer(request)
origin = origin.rstrip('/')
if origin != db_model.domain:
raise RuntimeError(trans('i18n_embedded.invalid_origin', origin = origin or ''))
+23
View File
@@ -6,6 +6,9 @@ import logging
from datetime import datetime, timedelta, timezone
from logging.handlers import RotatingFileHandler
from pathlib import Path
from urllib.parse import urlparse
from fastapi import Request
from common.core.config import settings
from typing import Optional
@@ -240,4 +243,24 @@ def prepare_model_arg(origin_arg: str):
return json.loads(origin_arg)
except:
return origin_arg
def get_origin_from_referer(request: Request):
referer = request.headers.get("referer")
if not referer:
return None
try:
parsed = urlparse(referer)
if not parsed.scheme or not parsed.hostname:
return None
port = parsed.port
if port:
if (parsed.scheme == "http" and port != 80) or \
(parsed.scheme == "https" and port != 443):
return f"{parsed.scheme}://{parsed.hostname}:{port}"
return f"{parsed.scheme}://{parsed.hostname}"
except Exception as e:
SQLBotLogUtil.error(f"解析 Referer 出错: {e}")
return referer
+1 -1
View File
@@ -1,6 +1,6 @@
[project]
name = "sqlbot"
version = "0.1.0"
version = "1.0.0"
description = ""
requires-python = ">=3.10,<3.13"
dependencies = [