無法從主網域存取子網域:沒有「Access-Control-Allow-Origin」
託管Web 應用程式時會出現此問題子網域嘗試存取主網域上的API 伺服器,但遇到「請求的資源上不存在'Access-Control-Allow-Origin'標頭」錯誤。
CORS 策略強制執行:
此訊息顯示API 伺服器的回應缺少「Access-Control-Allow-Origin」標頭,該標頭對於啟用跨來源資源共享(CORS) 至關重要。 CORS 是一種安全機制,可防止 Web 應用程式向其他網域發出未經授權的請求。
可能原因:
-
配置錯誤的CORS 設定: 透過在其回應中加入適當的「Access-Control-Allow -Origin」標頭,確保API 伺服器正確配置為允許來自子網域的跨來源請求。
-
反向代理問題: 驗證子網域和 API 伺服器之間的任何反向代理或負載平衡器不會阻止「Access-Control-Allow-Origin」標頭。
故障排除:
-
檢查預檢回應: 使用Chrome DevToolscurl 指令檢查預檢請求和回應。確保預檢響應包含必要的“Access-Control-Allow-Origin”標頭。
-
直接向 API 發送請求: 嘗試將預檢請求直接傳送到 API 伺服器以消除其他元件幹擾的可能性。
-
測試 CORS 設定:使用線上 CORS 測試工具或瀏覽器擴充功能來驗證 CORS 設定是否正常運作。
-
檢查回應標頭:使用curl等工具檢查來自API伺服器的回應標頭,並確保存在「Access-Control-Allow-Origin」標頭。
-
檢查AWS負載平衡器設定: 對於 AWS,請檢查與負載平衡器關聯的目標群組是否配置為 HTTPS,因為這有時會導致 CORS 問題。
其他資訊:
- [在Go 中使用Gin 處理CORS](https://www.digitalocean.com/community/tutorials /how-to-handle-cross-origin-resource-sharing-cors -in-go)
- [將CORS 與Gin-gonic 結合使用](https://godoc.org/github.com/ gin-gonic/gin#hdr-CORS)
- [測試帶有cURL 的CORS](https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request#Testing_CORS_with_cURL)
以上是為什麼我無法從主網域存取我的子網域 API?的詳細內容。更多資訊請關注PHP中文網其他相關文章!