2.9 KiB
2.9 KiB
保存失败问题解决方案
问题描述
点击保存工作流时出现两个错误:
- CORS错误:
Access to XMLHttpRequest... blocked by CORS policy - 500内部服务器错误:
POST /api/v1/workflows 500 (Internal Server Error)
问题原因
1. 500错误 ✅ 已修复
原因:WorkflowResponse 模型期望 created_at 和 updated_at 是字符串类型,但数据库模型返回的是 datetime 对象,导致响应验证失败。
修复:将 WorkflowResponse 中的 created_at 和 updated_at 从 str 改为 datetime 类型。
# 修复前
created_at: str
updated_at: str
# 修复后
from datetime import datetime
created_at: datetime
updated_at: datetime
2. CORS错误
原因:虽然配置中包含了 http://101.43.95.130:8038,但可能:
- CORS中间件配置需要重启服务才能生效
- 或者浏览器缓存了旧的CORS响应
解决方案:
- 后端服务已重启,CORS配置应该已生效
- 如果仍有问题,请清除浏览器缓存或使用无痕模式
修复内容
1. 修复响应模型 ✅
文件:backend/app/api/workflows.py
- 添加
from datetime import datetime - 将
WorkflowResponse中的created_at和updated_at改为datetime类型
2. 重启后端服务 ✅
- 重启后端服务以应用修复
测试步骤
-
清除浏览器缓存(推荐):
- 按
Ctrl+Shift+Delete清除缓存 - 或使用无痕模式(
Ctrl+Shift+N)
- 按
-
刷新页面:
- 按
Ctrl+F5强制刷新
- 按
-
测试保存:
- 创建工作流
- 添加节点和连接
- 点击"保存"按钮
- 应该看到"工作流已创建"或"工作流已保存"的成功提示
-
检查控制台:
- 打开浏览器控制台(F12)
- 应该不再出现500错误
- 如果仍有CORS错误,请清除缓存后重试
如果仍有问题
检查CORS配置
-
确认后端CORS配置:
docker-compose -f docker-compose.dev.yml exec backend python -c "from app.core.config import settings; print(settings.CORS_ORIGINS)"应该包含:
http://101.43.95.130:8038 -
检查后端日志:
docker-compose -f docker-compose.dev.yml logs --tail=50 backend -
测试API:
curl -X POST http://101.43.95.130:8037/api/v1/workflows \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Origin: http://101.43.95.130:8038" \ -d '{"name":"test","nodes":[],"edges":[]}'
常见问题
-
仍然出现CORS错误:
- 清除浏览器缓存
- 使用无痕模式
- 检查后端服务是否正常运行
-
仍然出现500错误:
- 检查后端日志:
docker-compose -f docker-compose.dev.yml logs backend - 确认数据库连接正常
- 确认用户已登录(有有效的token)
- 检查后端日志:
状态: ✅ 已修复 时间: 2024年