errorResponse.py
1.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
from flask import render_template, jsonify
import bleach
import re
def sanitize_error_message(message):
"""
清理和验证错误消息
"""
if not message:
return "发生未知错误"
# 移除任何敏感信息
message = re.sub(r'(password|token|key|secret)=[\w\-]+', r'\1=[FILTERED]', str(message))
# 清理HTML和特殊字符
message = bleach.clean(message, strip=True)
# 限制消息长度
return message[:200] if len(message) > 200 else message
def errorResponse(errorMsg, status_code=400):
"""
统一的错误响应处理
:param errorMsg: 错误消息
:param status_code: HTTP状态码
:return: 错误响应
"""
safe_message = sanitize_error_message(errorMsg)
if 'application/json' in request.headers.get('Accept', ''):
return jsonify({
'success': False,
'error': safe_message
}), status_code
return render_template(
'error.html',
errorMsg=safe_message,
status_code=status_code
), status_code