首頁 >web前端 >js教程 >為什麼我在存取 REST API 時收到'No 'Access-Control-Allow-Origin' Header”錯誤?

為什麼我在存取 REST API 時收到'No 'Access-Control-Allow-Origin' Header”錯誤?

DDD
DDD原創
2024-12-31 15:53:10255瀏覽

Why Am I Getting a

回應中沒有「Access-Control-Allow-Origin」標頭

了解CORS 和預檢請求

跨來源資源共享(CORS )是一種允許瀏覽器請求存取來自與請求來源不同的來源的資源的機制。當從不同來源發出請求時,瀏覽器會向伺服器發送預檢 OPTIONS 請求,以檢查伺服器是否允許該請求。

在問題中描述的情況下,瀏覽器正在發送預檢 OPTIONS向 HP ALM REST API 發出請求。但是,伺服器未回應必要的CORS 標頭,導致錯誤「請求的資源上不存在'Access-Control-Allow-Origin'標頭。」

解決問題

有幾種方法可以解決這個問題:

使用CORS代理:

CORS代理將請求轉送到目標伺服器,並將必要的 CORS 標頭新增至回應。如果您無法控制目標伺服器,這會很方便。

避免預檢請求:

要避免預檢請求,您可以確保該請求不需要授權或內容類型標頭。這可以透過使用替代身份驗證方法或將 JSON 資料編碼為查詢參數來實現。

解決通配符問題:

錯誤「Access-Control-Allow」當伺服器為Access-Control-Allow-Origin 標頭指定通配符('*')而不是要求客戶端的特定來源時,會發生「-Origin header must not be the wildcard」。若要解決此問題,請設定伺服器將 Access-Control-Allow-Origin 標頭設定為請求來源。

修復JavaScript 程式碼

問題中的JavaScript 程式碼有一些不正確的標頭,正在觸發預檢請求:

刪除這些標頭,因為它們不應在請求中發送。

以上是為什麼我在存取 REST API 時收到'No 'Access-Control-Allow-Origin' Header”錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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