请求头和请求体改为用原始请求里面的

This commit is contained in:
mark.tian
2025-12-03 12:13:01 +08:00
parent f4b40e7ff3
commit 7d9c7ef573
2 changed files with 29 additions and 33 deletions

2
.env
View File

@@ -9,7 +9,7 @@ REDIS_LOCK_MAX_RETRIES=100
# 业务配置 # 业务配置
COUNT_THRESHOLD=3 COUNT_THRESHOLD=3
EXTERNAL_API_ENABLED=false EXTERNAL_API_ENABLED=true
EXTERNAL_API_RETRY_MAX=3 EXTERNAL_API_RETRY_MAX=3
EXTERNAL_API_URL=https://127.0.0.1/api/openapi/customerApi/aiTaskResultFail EXTERNAL_API_URL=https://127.0.0.1/api/openapi/customerApi/aiTaskResultFail

View File

@@ -36,53 +36,49 @@ async def log_callback_request(
server_ip = server_host server_ip = server_host
server_port = server_port_info server_port = server_port_info
# 准备请求头信息(过滤敏感信息) # 准备请求头信息(直接记录原始请求头)
request_headers = dict(request.headers) request_headers = dict(request.headers)
safe_headers = {}
sensitive_headers = {'authorization', 'token', 'api-key', 'x-api-key', 'cookie'}
for key, value in request_headers.items(): # 获取原始请求体
if key.lower() in sensitive_headers: import json as json_module
safe_headers[key] = "***REDACTED***" try:
else: # 获取原始请求体字节并解码为字符串
safe_headers[key] = value body_bytes = await request.body()
body_str = body_bytes.decode('utf-8')
# 准备请求体信息 # 尝试解析为JSON对象,如果失败则使用原始字符串
request_body = callback_data.model_dump() try:
request_body = json_module.loads(body_str)
except json_module.JSONDecodeError:
request_body = body_str
except Exception as e:
logger.warning(f"⚠️ 读取请求体失败: {e}")
request_body = "Unable to read request body"
# 记录请求URL(JSON格式) # 记录请求URL(JSON格式)
logger.info(f"🌐 请求URL: {json.dumps(str(request.url), ensure_ascii=False)}") logger.info(f"🌐 请求URL: {request.url}")
# 记录site_id(JSON格式) # 记录site_id(JSON格式)
logger.info(f"📝 site_id: {json.dumps(site_id, ensure_ascii=False)}") logger.info(f"📝 site_id: {site_id}")
# 记录请求头(JSON格式)
logger.info(f"📋 请求头: {json.dumps(safe_headers, ensure_ascii=False, indent=2)}")
# 记录请求体(JSON格式)
logger.info(f"📄 请求体: {json.dumps(request_body, ensure_ascii=False, indent=2)}")
# 记录server_ip(JSON格式) # 记录server_ip(JSON格式)
server_info = { server_info = {
"ip": server_ip, "ip": server_ip,
"port": server_port "port": server_port
} }
logger.info(f"🏠 server_ip: {json.dumps(server_info, ensure_ascii=False)}") logger.info(f"🏠 server_ip: {server_info}")
# 记录client_ip(JSON格式) # 记录client_ip(JSON格式)
client_info = { client_info = {
"ip": client_ip, "ip": client_ip,
"port": client_port "port": client_port
} }
logger.info(f"🖥️ client_ip: {json.dumps(client_info, ensure_ascii=False)}") logger.info(f"🖥️ client_ip: {client_info}")
# 记录callback_data(JSON格式) # 记录请求头(JSON格式)
callback_data_json = { logger.info(f"📋 请求头: {json.dumps(request_headers, ensure_ascii=False, indent=2)}")
"count": callback_data.count,
"data_count": len(callback_data.data) if callback_data.data else 0, # 记录请求体(JSON格式)
"data_sample": callback_data.data[0].model_dump() if callback_data.data else None logger.info(f"📄 请求体: {json.dumps(request_body, ensure_ascii=False, indent=2)}")
}
logger.info(f"📦 callback_data: {json.dumps(callback_data_json, ensure_ascii=False, indent=2)}")
try: try:
# 保存到数据库 # 保存到数据库
@@ -91,8 +87,8 @@ async def log_callback_request(
remote_address=f"{client_ip}:{client_port}" if client_ip and client_port else client_ip, remote_address=f"{client_ip}:{client_port}" if client_ip and client_port else client_ip,
server_ip=f"{server_ip}:{server_port}" if server_ip and server_port else server_ip, server_ip=f"{server_ip}:{server_port}" if server_ip and server_port else server_ip,
request_url=str(request.url), request_url=str(request.url),
request_headers=safe_headers, # 保存过滤后的请求头 request_headers=request_headers, # 保存原始请求头
request_body=request_body request_body=request_body # 保存从request.body获取的原始请求体
) )
db.add(callback_log) db.add(callback_log)