cors_template.py 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. """
  2. CORS配置模板文件
  3. 提供多种配置方案供用户选择
  4. """
  5. # ============================================================================
  6. # 配置方案选择
  7. # ============================================================================
  8. # 选择配置方案(取消注释你想要的方案)
  9. CORS_SCHEME = "ALLOW_ALL" # 最灵活,允许任意前端访问
  10. # CORS_SCHEME = "IP_RANGE" # 允许特定IP网段
  11. # CORS_SCHEME = "FIXED_LIST" # 只允许固定的前端地址
  12. # ============================================================================
  13. # 方案1: 允许所有源(最灵活,开发环境推荐)
  14. # ============================================================================
  15. if CORS_SCHEME == "ALLOW_ALL":
  16. ALLOWED_ORIGINS = "*"
  17. SUPPORTS_CREDENTIALS = False # 通配符时不支持凭据
  18. SEND_WILDCARD = True
  19. # ============================================================================
  20. # 方案2: 允许特定IP网段(生产环境推荐)
  21. # ============================================================================
  22. elif CORS_SCHEME == "IP_RANGE":
  23. # 允许的IP网段
  24. ALLOWED_IP_RANGES = [
  25. "192.168.0.0/16", # 局域网IP段
  26. "10.0.0.0/8", # 内网IP段
  27. "172.16.0.0/12", # 内网IP段
  28. "127.0.0.0/8", # 本地回环
  29. ]
  30. # 允许的端口范围
  31. ALLOWED_PORTS = [
  32. 3000, 5173, 8080, # 常见开发端口
  33. 3001, 5174, 8081, # 备用端口
  34. 4000, 5000, 6000, # 其他端口
  35. ]
  36. ALLOWED_ORIGINS = "*" # 动态验证IP
  37. SUPPORTS_CREDENTIALS = True
  38. SEND_WILDCARD = False
  39. # ============================================================================
  40. # 方案3: 固定地址列表(最安全,但不够灵活)
  41. # ============================================================================
  42. elif CORS_SCHEME == "FIXED_LIST":
  43. ALLOWED_ORIGINS = [
  44. "http://localhost:5173", # Vite默认端口
  45. "http://localhost:3000", # React默认端口
  46. "http://localhost:8080", # Vue默认端口
  47. "http://127.0.0.1:5173",
  48. "http://127.0.0.1:3000",
  49. "http://127.0.0.1:8080",
  50. # 添加你的前端地址
  51. # "http://your-frontend-ip:port",
  52. ]
  53. SUPPORTS_CREDENTIALS = True
  54. SEND_WILDCARD = False
  55. # ============================================================================
  56. # 通用配置
  57. # ============================================================================
  58. # 允许的HTTP方法
  59. ALLOWED_METHODS = [
  60. "GET", "POST", "PUT", "DELETE", "OPTIONS"
  61. ]
  62. # 允许的请求头
  63. ALLOWED_HEADERS = [
  64. "Content-Type",
  65. "Authorization",
  66. "X-Requested-With",
  67. "Accept",
  68. "Origin",
  69. "Cache-Control",
  70. "X-File-Name"
  71. ]
  72. # 暴露的响应头
  73. EXPOSED_HEADERS = [
  74. "Content-Type",
  75. "Content-Length",
  76. "Content-Disposition",
  77. "X-Total-Count"
  78. ]
  79. # CORS配置选项
  80. CORS_OPTIONS = {
  81. "resources": {r"/api/*": {"origins": ALLOWED_ORIGINS}},
  82. "supports_credentials": SUPPORTS_CREDENTIALS,
  83. "methods": ALLOWED_METHODS,
  84. "allow_headers": ALLOWED_HEADERS,
  85. "expose_headers": EXPOSED_HEADERS,
  86. "max_age": 86400, # 预检请求缓存时间(秒)
  87. "send_wildcard": SEND_WILDCARD,
  88. "automatic_options": True
  89. }
  90. # ============================================================================
  91. # 配置说明
  92. # ============================================================================
  93. """
  94. 配置方案说明:
  95. 1. ALLOW_ALL (推荐用于开发环境)
  96. - 优点:最灵活,支持任意前端地址
  97. - 缺点:安全性较低,不支持凭据
  98. - 适用:开发、测试环境
  99. 2. IP_RANGE (推荐用于生产环境)
  100. - 优点:安全性适中,支持凭据
  101. - 缺点:需要配置IP网段
  102. - 适用:内网生产环境
  103. 3. FIXED_LIST (最安全)
  104. - 优点:最安全,完全控制访问源
  105. - 缺点:不够灵活,需要手动维护
  106. - 适用:严格安全要求的环境
  107. 使用方法:
  108. 1. 选择你想要的配置方案
  109. 2. 取消注释对应的 CORS_SCHEME
  110. 3. 根据需要调整具体配置
  111. 4. 重启Flask应用使配置生效
  112. """