- Database schema with MySQL support - LLM API integration (Gemini 2.5 Flash, DeepSeek, OpenAI) - Error handling with copyable error messages - CORS fix for API calls - Complete setup documentation 🤖 Generated with Claude Code https://claude.com/claude-code Co-Authored-By: Claude <noreply@anthropic.com>
4.9 KiB
Gemini API Referrer 錯誤解決方案
🔴 錯誤訊息
{
"error": {
"code": 403,
"message": "Requests from referer \u003cempty\u003e are blocked.",
"status": "PERMISSION_DENIED",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "API_KEY_HTTP_REFERRER_BLOCKED"
}
]
}
}
📋 問題原因
Gemini API Key 有 HTTP Referrer 限制,這是 Google 的安全機制。當從服務器端調用時,HTTP Referrer 為空,導致請求被阻擋。
✅ 解決方案
方案 1: 修改 Gemini API Key 設定(推薦)
-
訪問 Google AI Studio https://makersuite.google.com/app/apikey
-
找到您的 API Key
-
點擊「Edit API Key」或創建新的 API Key
-
設定 Application restrictions
- 選擇 "None" 或 "IP addresses"
- 不要選擇 "HTTP referrers (websites)"
-
保存設定
-
更新 .env 文件
GEMINI_API_KEY=your_new_unrestricted_api_key -
重啟 Flask 服務器
# 按 Ctrl+C 停止服務器 python start_server.py
方案 2: 使用其他 LLM API(臨時解決)
如果您有其他 LLM API Key,可以暫時使用:
選項 A: 使用 DeepSeek
-
獲取 DeepSeek API Key https://www.deepseek.com/
-
添加到 .env
DEEPSEEK_API_KEY=your_deepseek_api_key -
修改默認 API 編輯
index.html,找到callClaudeAPI調用,改為:const result = await callClaudeAPI(prompt, 'deepseek');
選項 B: 使用 OpenAI
-
獲取 OpenAI API Key https://platform.openai.com/api-keys
-
添加到 .env
OPENAI_API_KEY=your_openai_api_key -
修改默認 API 編輯
index.html,找到callClaudeAPI調用,改為:const result = await callClaudeAPI(prompt, 'openai');
方案 3: 創建 API 選擇器(最佳長期方案)
讓用戶在前端選擇要使用的 LLM API。
我可以幫您添加一個下拉選單,讓用戶可以在 Gemini、DeepSeek 和 OpenAI 之間切換。
🔍 驗證修正
測試 API 連線
訪問測試頁面:http://127.0.0.1:5000/api-test
點擊每個 API 的「🧪 測試連線」按鈕,查看哪些 API 可用。
成功的表現
- ✅ API 測試顯示「✓ 連線成功」
- ✅ 瀏覽器不再顯示 403 錯誤
- ✅ AI 自動填充功能正常工作
📝 詳細錯誤訊息說明
您在截圖中看到的錯誤:
"reason": "API_KEY_HTTP_REFERRER_BLOCKED"
這表示:
- Gemini API Key 設定了 HTTP Referrer 限制
- 服務器端請求沒有 Referrer,被 Google 阻擋
- 需要移除 Referrer 限制或使用其他 API
🎯 推薦操作順序
立即操作(5 分鐘)
-
使用 DeepSeek 或 OpenAI(臨時解決)
# 編輯 .env 添加其他 API Key # 重啟服務器 python start_server.py -
測試頁面重新載入
- 按 Ctrl+F5 刷新
- 測試 AI 功能
長期解決(10 分鐘)
-
修改 Gemini API Key 設定
- 訪問 Google AI Studio
- 移除 HTTP Referrer 限制
- 創建新的無限制 API Key
-
更新配置
- 更新 .env 文件
- 重啟服務器
-
全面測試
- 測試所有 API
- 確保都能正常工作
💡 補充說明
為什麼服務器端請求沒有 Referrer?
當從 Python Flask 後端調用 API 時:
- HTTP 請求是由服務器發出的
- 沒有瀏覽器上下文
- Referer header 為空或不存在
- Google 的安全機制會阻擋這類請求
如何避免這個問題?
- 使用無限制的 API Key(推薦)
- 使用 IP 地址限制而非 Referrer 限制
- 使用服務帳戶(企業方案)
🆘 仍然有問題?
如果修改 API Key 後還是不行
-
檢查 API Key 是否生效
- 等待 1-2 分鐘
- Google 的設定更新需要時間
-
確認 .env 文件正確
# 查看 .env 內容 type .env -
重啟服務器
# 完全停止後重新啟動 python start_server.py -
清除瀏覽器緩存
- 按 Ctrl+Shift+Delete
- 清除緩存和 Cookie
- 重新載入頁面
📊 API 對比
| API | 優點 | 缺點 | 推薦度 |
|---|---|---|---|
| Gemini | 免費額度高,速度快 | Referrer 限制問題 | ⭐⭐⭐ |
| DeepSeek | 便宜,中文支持好 | 需要付費 | ⭐⭐⭐⭐ |
| OpenAI | 穩定,功能強大 | 價格較高 | ⭐⭐⭐⭐⭐ |
✅ 完成檢查清單
修正完成後,請檢查:
- 至少一個 LLM API 測試成功
- AI 自動填充功能正常
- 沒有 403 錯誤
- 錯誤訊息可以完整顯示和複製
- 瀏覽器控制台沒有錯誤
文件版本: 1.0 最後更新: 2024-12-04 問題類型: Gemini API HTTP Referrer 限制 解決狀態: ✅ 已提供完整解決方案