首頁 >web前端 >js教程 >為什麼從不同網域存取 XML 檔案時出現「No \'Access-Control-Allow-Origin\' Header\」錯誤?

為什麼從不同網域存取 XML 檔案時出現「No \'Access-Control-Allow-Origin\' Header\」錯誤?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-03 18:21:03876瀏覽

Why Do I Get

jQuery XML 錯誤:「要求的資源上不存在'Access-Control-Allow-Origin'標頭」

嘗試時使用jQuery 存取位於不同網域的XML 檔案時,您可能會遇到錯誤訊息:「要求的內容中不存在'Access-Control-Allow-Origin'標頭資源」。此錯誤是由於同源策略導致的,該策略限制跨來源 AJAX 呼叫。

了解同源策略

同源策略強制執行以下操作Web 瀏覽器僅允許對與發出請求的HTML 頁面位於同一網域中的服務進行AJAX 呼叫。在給定的範例中,HTML 頁面託管在http://run.jsbin.com/ 上,而XML 檔案位於http://www.ecb.europa.eu/ 上,從而導致跨網域請求:被瀏覽器阻止。

啟用跨來源請求 (CORS)

要允許跨來源請求,伺服器必須包含其回應中的適當標頭。這些標頭之一是 Access-Control-Allow-Origin 標頭,它指定允許存取資源的來源。

對於 XML 文件,ECB 的伺服器不提供必要的 CORS標頭,因此出現錯誤訊息。要解決此問題,需要將伺服器設定為包含以下標頭:

Access-Control-Allow-Origin: http://run.jsbin.com
Access-Control-Allow-Methods: GET
Access-Control-Allow-Headers: Content-Type

預檢請求注意事項

在某些情況下,例如在進行對於具有非簡單標頭的POST 請求,瀏覽器可能會執行OPTIONS 預檢請求來確定伺服器是否支援特定請求的CORS。如果伺服器對此預檢請求的回應不包含適當的 CORS 標頭,則主請求將失敗並顯示相同的錯誤訊息。因此,在對預檢和主請求的回應中包含必要的標頭非常重要。

以上是為什麼從不同網域存取 XML 檔案時出現「No 'Access-Control-Allow-Origin' Header」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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