"""
CORS配置文件
用于管理Flask应用的跨域资源共享设置
"""

# 允许的源（前端地址）
# 方案1: 允许所有源（开发环境推荐，最灵活）
ALLOW_ALL_ORIGINS = True

# 方案2: 允许特定网段的IP地址（生产环境推荐）
ALLOWED_IP_RANGES = [
    "192.168.0.0/16",    # 局域网IP段
    "10.0.0.0/8",        # 内网IP段
    "172.16.0.0/12",     # 内网IP段
]

# 方案3: 允许的固定源（如果需要限制特定地址）
ALLOWED_ORIGINS = [
    "http://localhost:5173",      # Vite默认端口
    "http://localhost:3000",      # React默认端口
    "http://localhost:8080",      # Vue默认端口
    "http://127.0.0.1:5173",
    "http://127.0.0.1:3000",
    "http://127.0.0.1:8080",
    "http://192.168.3.218:5173",  # 客户端前端地址
    "http://192.168.3.218:3000",  # 客户端备用端口
    "http://192.168.3.218:8080",  # 客户端备用端口
    # 生产环境地址（如果需要）
    # "https://yourdomain.com",
]

# 允许的HTTP方法
ALLOWED_METHODS = [
    "GET",
    "POST", 
    "PUT",
    "DELETE",
    "OPTIONS"
]

# 允许的请求头
ALLOWED_HEADERS = [
    "Content-Type",
    "Authorization",
    "X-Requested-With",
    "Accept",
    "Origin",
    "Cache-Control",
    "X-File-Name"
]

# 暴露的响应头
EXPOSED_HEADERS = [
    "Content-Type",
    "Content-Length",
    "Content-Disposition",
    "X-Total-Count",
    "X-Content-Type-Options",
    "X-Frame-Options",
    "X-XSS-Protection"
]

# CORS配置选项
if ALLOW_ALL_ORIGINS:
    # 方案1: 允许所有源（最灵活）
    CORS_OPTIONS = {
        "resources": {r"/api/*": {"origins": "*"}},
        "supports_credentials": False,  # 通配符时不能启用凭据
        "methods": ALLOWED_METHODS,
        "allow_headers": ALLOWED_HEADERS,
        "expose_headers": EXPOSED_HEADERS,
        "max_age": 86400,  # 预检请求缓存时间（秒）
        "send_wildcard": True,
        "automatic_options": True
    }
else:
    # 方案2: 使用固定源列表
    CORS_OPTIONS = {
        "resources": {r"/api/*": {"origins": ALLOWED_ORIGINS}},
        "supports_credentials": True,
        "methods": ALLOWED_METHODS,
        "allow_headers": ALLOWED_HEADERS,
        "expose_headers": EXPOSED_HEADERS,
        "max_age": 86400,  # 预检请求缓存时间（秒）
        "send_wildcard": False,
        "automatic_options": True
    }
