diff --git a/static/config.ini b/static/config.ini index cd64910..fbccc07 100644 --- a/static/config.ini +++ b/static/config.ini @@ -11,4 +11,7 @@ cert_file = cert.pem key_file = key.pem [cors] -allowed_origins = * +# 允许跨域的 Origin 白名单(逗号分隔) +# 注意:生产环境请勿包含 localhost / 127.0.0.1 / 通配符 * +# 本地开发联调时可临时追加 http://localhost:9200,调试完务必移除 +allowed_origins = https://qsont.me,https://yhdet.top diff --git a/static/fsys.py b/static/fsys.py index 934890d..bb8db56 100644 --- a/static/fsys.py +++ b/static/fsys.py @@ -38,7 +38,6 @@ parser.add_argument('--config', type=str, default='config.ini', help='Configurat args = parser.parse_args() app = Flask(__name__) -CORS(app, origins=["https://qsont.me", "https://yhdet.top", "http://localhost:9200"]) apply_security_headers(app) # ==================== 配置文件加载 ==================== @@ -50,17 +49,23 @@ file_config = { 'server': {'host': '0.0.0.0', 'port': '5000'}, 'directory': {'root': './public'}, 'ssl': {'enabled': 'false', 'cert_file': 'cert.pem', 'key_file': 'key.pem'}, + # CORS 白名单(逗号分隔),生产环境默认值;localhost 仅限本地开发时显式写入 config.ini + 'cors': {'allowed_origins': 'https://qsont.me,https://yhdet.top'}, } if os.path.exists(CONFIG_FILE): config_parser = configparser.ConfigParser() config_parser.read(CONFIG_FILE, encoding='utf-8') - for section in ['server', 'directory', 'ssl']: + for section in ['server', 'directory', 'ssl', 'cors']: if section in config_parser: for key, value in config_parser[section].items(): if key in file_config[section]: file_config[section][key] = value +# ==================== CORS(配置加载完成后初始化) ==================== +_cors_origins = [o.strip() for o in file_config['cors']['allowed_origins'].split(',') if o.strip()] +CORS(app, origins=_cors_origins) + HTML_ROOT_DIR = file_config['directory']['root'] if HTML_ROOT_DIR and not os.path.isabs(HTML_ROOT_DIR): HTML_ROOT_DIR = os.path.join(BASE_DIR, HTML_ROOT_DIR)