HTTP Request 節點在呼叫 api.openai.com 時失敗,錯誤為「config.headers.setContentType is not a function」
描述問題/錯誤/問題
錯誤訊息是什麼(如果有的話)?
請分享您的工作流程
(選擇畫布上的節點,使用鍵盤快捷鍵 CMD+C/CTRL+C 和 CMD+V/CTRL+V 來複製並貼上工作流程。)
分享最後一個節點傳回的輸出
關於您的 n8n 設定的資訊
- n8n 版本:
- 資料庫(預設值:SQLite):
- n8n EXECUTIONS_PROCESS 設定(預設值:own、main):
- 透過以下方式執行 n8n(Docker、npm、n8n cloud、桌面應用程式):
- 作業系統:
Hi @erezeloi
這是 n8n 團隊已知的一個問題。
請留意任何更新
@erezeloi 這是 openai.com URL 攔截器 bug,出現在 Cloud 2.19.x,經過 n8n 的請求協助函式的每條路徑都會觸發。目前唯一的解決方案是透過 Cloudflare Worker 進行代理,這樣 URL 就不會是 api.openai.com:
export default { async fetch(req) { const u = new URL(req.url); u.host = 'api.openai.com'; u.protocol = 'https:'; return fetch(new Request(u, req)); } }
然後將 HTTP 節點指向 https://yourworker.workers.dev/v1/…,auth 標頭傳遞正常工作。
@erezeloi 歡迎加入社群!您遇到了 n8n Cloud 2.19.x 版本中的已知問題,團隊正在積極處理。
在等待修復期間,如果您的使用情況允許,這裡有一個比 Cloudflare 代理更簡單的解決方案:
使用 HTTP Request 節點搭配標頭驗證,而不是 OpenAI 認證:
- 新增 HTTP Request 節點
- 方法:POST
- URL:
https://api.openai.com/v1/chat/completions
- 驗證:標頭驗證
- 標頭名稱:
Authorization,值:Bearer sk-YOUR-API-KEY
- Body 內容類型:JSON,搭配您的負載
這完全繞過了損壞的 axios 攔截器,連線運作無誤。輸出的 JSON 格式與 OpenAI 節點返回的格式完全相同。等官方修復發布後,您可以改回使用原生認證。
希望這能幫助您解決問題!