首頁 >web前端 >js教程 >為什麼我的跨來源請求失敗並顯示'對預檢請求的回應未通過存取控制檢查”?

為什麼我的跨來源請求失敗並顯示'對預檢請求的回應未通過存取控制檢查”?

DDD
DDD原創
2024-12-03 16:31:10243瀏覽

Why Does My Cross-Origin Request Fail with

了解並解決「對預檢請求的回應未通過存取控制檢查」錯誤

跨源資源共享(CORS)通過限制跨不同來源存取敏感資料的請求來確保安全性。當 AJAX 請求源自與託管資源的伺服器不同的來源時,將發送預檢請求以檢查是否允許該請求。

在提供的情境中,ngResource 用於存取 Amazon Web Services REST API。但是,瀏覽器傳回錯誤「對預檢請求的回應未通過存取控制檢查 - 沒有『Access-Control-Allow-Origin』標頭。」這表示伺服器未啟用 CORS 標頭。

解決問題

要解決此問題,可以採取多種方法:

1.停用CORS:

在瀏覽器中停用CORS。這是一個臨時解決方案,不應用於生產環境。

2.瀏覽器外掛程式:

使用允許跨網域請求的瀏覽器外掛程式。然而,這種方法可能並不相容於所有插件。

3.代理伺服器:

利用nginx等代理程式轉送要求並處理CORS問題。這允許瀏覽器與代理通信,然後代理與實際伺服器互動。

4.伺服器設定:

設定伺服器以接受來自特定來源的標頭。這涉及修改伺服器的設定檔以啟用 CORS。請參閱特定 Web 伺服器的文件以取得說明。

詳細說明

當瀏覽器遇到跨網域請求時,它會發送預檢請求來決定是否目標伺服器允許此類請求。預檢請求採用 OPTIONS HTTP 方法,並包含特定標頭,包括 Origin 標頭。

伺服器使用包含 CORS 標頭的相應預檢回應進行回應。 Access-Control-Allow-Origin 標頭指定允許哪些來源存取該資源。如果預檢回應不包含此標頭,瀏覽器將阻止實際請求。

結論

透過實作適當的解決方案,開發人員可以克服 CORS 問題並啟用不同領域之間的跨域請求。根據專案的要求和安全考慮選擇最佳方法至關重要。

以上是為什麼我的跨來源請求失敗並顯示'對預檢請求的回應未通過存取控制檢查”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn