#!/bin/bash # CORS跨域问题快速修复脚本 echo "=== CORS跨域问题修复工具 ===" # 检查当前目录 if [ ! -f "main.py" ]; then echo "错误: 请在包含main.py的项目根目录下运行此脚本" exit 1 fi echo "当前目录: $(pwd)" # 1. 更新配置文件 echo "" echo "1. 更新CORS配置..." # 更新config.py echo "更新 app/core/config.py..." sed -i 's/ALLOWED_HOSTS: List\[str\] = \[.*\]/ALLOWED_HOSTS: List[str] = ["*"] # 允许所有域名访问/' app/core/config.py if [ $? -eq 0 ]; then echo "✓ config.py 更新成功" else echo "✗ config.py 更新失败,请手动检查" fi # 2. 更新.env文件 echo "" echo "2. 更新环境配置..." if [ -f ".env" ]; then # 备份原始文件 cp .env .env.backup.$(date +%Y%m%d_%H%M%S) # 更新CORS配置 sed -i 's/ALLOWED_HOSTS=\[.*\]/ALLOWED_HOSTS=["*"]/' .env if grep -q 'ALLOWED_HOSTS=\["\*"\]' .env; then echo "✓ .env 文件更新成功" else echo "✗ .env 文件更新失败,请手动检查" fi else echo ".env 文件不存在,创建新的配置..." cat > .env << EOF # 基础配置 ENVIRONMENT=production DEBUG=false # 数据库配置 DATABASE_URL=mysql+pymysql://用户名:密码@localhost:3306/数据库名 # Redis配置 REDIS_URL=redis://localhost:6379 # JWT配置 JWT_SECRET_KEY=your-super-secret-jwt-key-change-in-production-$(date +%s) JWT_ALGORITHM=HS256 JWT_EXPIRE_MINUTES=30 # 文件上传配置 UPLOAD_DIR=uploads MAX_FILE_SIZE=10485760 # CORS配置 ALLOWED_HOSTS=["*"] EOF echo "✓ .env 文件创建成功" fi # 3. 验证配置 echo "" echo "3. 验证CORS配置..." # 检查config.py if grep -q 'ALLOWED_HOSTS: List\[str\] = \["\*"\]' app/core/config.py; then echo "✓ config.py CORS配置正确" else echo "✗ config.py CORS配置可能有问题" fi # 检查.env文件 if grep -q 'ALLOWED_HOSTS=\["\*"\]' .env; then echo "✓ .env CORS配置正确" else echo "✗ .env CORS配置可能有问题" fi # 4. 重启服务提示 echo "" echo "4. 重启服务..." echo "配置更新完成,请重启应用以使配置生效" echo "" echo "重启方式:" echo "1. 如果应用正在运行,请按 Ctrl+C 停止" echo "2. 然后重新启动: python main.py" echo "3. 或者使用启动脚本: ./start_app.sh" echo "" echo "如果使用Docker部署:" echo "1. 重新构建镜像: docker build -t cloud-drive-backend:latest ." echo "2. 重新运行容器: docker run -d -p 8002:8002 cloud-drive-backend:latest" # 5. 测试CORS echo "" echo "5. CORS测试建议..." echo "重启后,可以通过以下方式测试CORS:" echo "1. 浏览器开发者工具 -> Network -> 查看请求头" echo "2. 检查是否有 'Access-Control-Allow-Origin: *' 头" echo "3. 使用curl测试: curl -H 'Origin: http://example.com' -H 'Access-Control-Request-Method: POST' -H 'Access-Control-Request-Headers: X-Requested-With' -X OPTIONS http://localhost:8002/api/v1/health" echo "" echo "=== CORS修复完成 ===" echo "" echo "注意事项:" echo "- 允许所有域名访问 (\"*\") 仅适用于开发和测试环境" echo "- 生产环境建议设置具体的允许域名列表" echo "- 如需更安全的CORS配置,请手动修改 ALLOWED_HOSTS"