118 lines
3.2 KiB
Bash
118 lines
3.2 KiB
Bash
#!/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" |