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中文網其他相關文章!