CORS 錯誤
跨域資源共享 (CORS) 是一種標準,允許伺服器放寬 同源策略。這用於明確允許某些跨域請求,同時拒絕其他請求。例如,如果某個網站提供可嵌入服務,則可能需要放寬某些限制。設定此類 CORS 配置並不一定容易,可能會遇到一些挑戰。在本頁中,我們將探討一些常見的 CORS 錯誤訊息以及如何解決它們。
如果 CORS 配置設定不正確,瀏覽器控制檯將顯示類似於 "Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at $somesite" 的錯誤,表明請求由於違反 CORS 安全規則而被阻止。但這並不一定意味著設定錯誤。請求也可能實際上被使用者的 Web 應用程式和遠端外部服務故意拒絕。但是,如果端點應該可用,則需要進行一些除錯以使其成功。
識別問題
要了解 CORS 配置的根本問題,您需要找出哪個請求出錯以及原因。以下步驟可能對您有所幫助:
錯誤訊息的文字將類似於以下內容:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://some-url-here. (Reason: additional information here).
注意:出於安全原因,有關 CORS 請求出錯的具體資訊 *不可用於 JavaScript 程式碼*。程式碼只知道發生了錯誤。要確定具體出錯的原因,唯一的辦法是檢視瀏覽器的控制檯以獲取詳細資訊。
CORS 錯誤訊息
當請求因 CORS 失敗時,Firefox 的控制檯會在其控制檯中顯示訊息。錯誤文字的一部分是“原因”訊息,它提供了對出錯原因的更多見解。原因訊息列在下面;單擊訊息以開啟一篇文章,詳細解釋錯誤並提供可能的解決方案。
- 原因: CORS 已停用
- 原因: CORS 請求未成功
- 原因: 無法新增 CORS 標頭 'Origin'
- 原因: 不允許 CORS 請求外部重定向
- 原因:CORS 請求不為 http
- 原因: 缺少 CORS 標頭 'Access-Control-Allow-Origin'
- 原因: CORS 標頭 'Access-Control-Allow-Origin' 與 'xyz' 不匹配
- 原因: 如果 CORS 標頭 'Access-Control-Allow-Origin' 為 '*', 則不支援憑據
- 原因: 在 CORS 標頭 'Access-Control-Allow-Methods' 中未找到方法
- 原因: CORS 標頭 'Access-Control-Allow-Credentials' 中預期 'true'
- 原因: CORS 預檢通道未成功
- 原因: CORS 標頭 'Access-Control-Allow-Methods' 中的無效令牌 'xyz'
- 原因: CORS 標頭 'Access-Control-Allow-Headers' 中的無效令牌 'xyz'
- 原因: CORS 預檢通道中缺少 CORS 標頭 'Access-Control-Allow-Headers' 中的令牌 'xyz'
- 原因: 不允許使用多個 CORS 標頭 'Access-Control-Allow-Origin'