XMLHttpRequest
對象用于在瀏覽器中創建異步 HTTP 請求。然而,出于安全原因,瀏覽器實施了同源策略(Same-Origin Policy),這限制了從一個源加載的文檔或腳本如何與來自另一個源的資源進行交互。這意味著,如果你的請求是從不同的域名、協議或端口發出的,那么瀏覽器會阻止這個請求。
要處理跨域請求,你可以使用以下方法:
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: X-Requested-With, Content-Type
這將允許任何源進行 GET、POST、PUT 和 DELETE 請求。你可以根據需要調整這些頭。
2. JSONP(JSON with Padding):這是一種較舊的技術,它利用了 <script>
標簽沒有跨域限制的特性。服務器返回的響應將包含一個函數調用,該函數將 JSON 數據作為參數傳遞。然而,JSONP 只支持 GET 請求,并且存在安全風險,因為它允許執行跨域的 JavaScript 代碼。
3. 代理服務器:你可以在自己的服務器上設置一個代理,該代理將請求轉發到目標服務器,并將響應返回給客戶端。這樣,客戶端就可以繞過同源策略的限制,因為請求是在同一個域下發出的。這種方法需要額外的服務器配置和維護。
4. 使用第三方庫或服務:有些第三方庫或服務(如 CORS Anywhere)可以幫助你處理跨域請求。這些庫或服務通常在你的瀏覽器中運行,并充當代理服務器,將請求轉發到目標服務器。
請注意,跨域請求可能會帶來安全風險,因此你應該始終驗證來自服務器的響應,并確保你信任該服務器。此外,你應該遵循最佳實踐,例如使用 HTTPS 來加密通信,以及避免在客戶端存儲敏感信息。