WebSocket证书错误的根本原因: Safari需要先通过HTTPS页面访问来信任证书,然后WebSocket才能使用该证书。
解决方法: 必须先访问后端API文档页面 → 手动信任证书 → 再访问前端
在电脑上确认:
后端:
# 应该看到这一行
✅ 使用SSL证书启动
INFO: Uvicorn running on https://0.0.0.0:8000
前端:
# 应该看到这一行
➜ Network: https://192.168.2.105:5173/
⚠️ 这是最关键的一步!
在iPhone Safari地址栏输入(注意是8000端口):
https://192.168.2.105:8000/docs
3.1 看到红色警告页面
页面内容:
⚠️ 无法验证服务器身份
"192.168.2.105"的身份无法验证
不要点击"返回"!
3.2 点击"显示详细信息"
在警告信息下方,有个灰色小字链接:
显示详细信息
点击它!
3.3 出现更多信息
会显示:
你正在查看的网站可能不是"192.168.2.105"
建议:返回到安全连接
仍然不要返回!
3.4 点击蓝色链接"访问此网站"
在底部会有一个蓝色链接:
访问此网站
点击它!
3.5 再次确认
会再次提示确认,再点击一次:
访问此网站
3.6 成功!
如果页面加载成功,会看到:
这说明证书已被临时信任!✅
⚠️ 重要:
Safari会记住这个证书的信任状态(在Safari打开期间)。
在Safari中:
输入地址:
https://192.168.2.105:5173
如果成功,你应该:
验证WebSocket连接: 在Safari中启用开发者工具(需要电脑帮助)查看控制台,应该显示:
✅ 连接WebSocket: wss://192.168.2.105:8000/ws/realtime
✅ WebSocket连接成功
在iPhone Safari访问:
https://192.168.2.105:8000
应该看到:
{"message":"Tolan Voice Assistant API"}
如果无法访问,检查:
如果是公司Wi-Fi,可能有网络限制。尝试:
如果HTTPS证书问题太麻烦,可以暂时使用HTTP:
在电脑上:
# 1. 删除证书(让服务自动切换为HTTP)
rm /Users/wuzilong/work/00code/Tolan/ssl/key.pem
rm /Users/wuzilong/work/00code/Tolan/ssl/cert.pem
# 2. 修改前端配置
cat > /Users/wuzilong/work/00code/Tolan/frontend/.env << 'ENVEOF'
# 使用HTTP(无证书)
VITE_WS_URL=ws://192.168.2.105:8000/ws/realtime
ENVEOF
# 3. 重启后端
cd /Users/wuzilong/work/00code/Tolan/backend
# Ctrl+C停止,然后
python main.py
# 应该看到:未找到SSL证书,使用HTTP启动
# 4. 重启前端
cd /Users/wuzilong/work/00code/Tolan/frontend
# Ctrl+C停止,然后
npm run dev
iPhone访问(注意是http):
http://192.168.2.105:5173
优点:
缺点:
使用方法A(临时信任)时,请确认:
https://192.168.2.105:8000/docshttps://192.168.2.105:5173方案1:继续使用HTTPS(推荐)
https://192.168.2.105:8000/docs方案2:暂时改用HTTP(最简单)
rm ssl/*.pemfrontend/.env:VITE_WS_URL=ws://192.168.2.105:8000/ws/realtimehttp://192.168.2.105:5173(http)你想用哪个方案?🤔