了解並解決「對預檢請求的回應未通過存取控制檢查」錯誤
跨源資源共享(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中文網其他相關文章!