Experience Cloud Identity 服務的 CORS 支援 cors-support-in-the-experience-cloud-id-service
瀏覽器使用跨原始資源共用 (CORS) 來從目前網域以外的其他網域要求資源。Experience Cloud Identity Service 支援 CORS 標準,以允許這些用戶端的跨原始資源要求。此 ID 服務在舊版瀏覽器或不支援 CORS 的瀏覽器上會回復為 JSONP 要求。
相同來源政策和ID服務要求的問題 section-6608cf46d27143eeaeabacaa6aa14e8e
相同來源政策是網頁瀏覽器實作的安全控制或限制。在此層級實作時,網頁瀏覽器會自行判斷是否應允許或是封鎖從一個頁面向另一個頁面提出的資源要求。要了判斷某個要求是否為相同來源的要求,瀏覽器會比較:
- 統一資源識別項 (URI)
- 主機名稱 (例如 http://www.my-webpage-example.com)
- 連接埠號碼 (例如,適用於 HTTP 和 HTTPS 要求的連接埠 80 和 440)
如果兩個頁面具有相同特性,瀏覽器會讓要求成功,如果不具有相同特性則會封鎖資源要求。
CORS會根據相同來源原則解決問題 section-76c87ec3295d447bab220c84f138c235
CORS 提供安全、有效的方法在不同網域中要求資源。CORS 規格包括瀏覽器用來傳送、接收及評估資源要求的一組 HTTP 標頭。評估資源要求稱為 preflight check
。這項檢查可讓瀏覽器和伺服器判斷要允許或封鎖哪些要求。此預檢對應用程式、API 或要求資源的指令碼而言是透明的。資源要求處理中有兩個重要的標頭,包括:
Origin
:識別要求來源的要求標頭。Access-Control-Allow-Origin
:指出資源是否可與要求者共用的回應標頭。
讓我們來看看這些標題如何運作。在此範例中,假設有一家金融服務公司已在其網站 www.finance-website.com. 上實作 Experience Cloud ID 服務。下表定義了 CORS 要求和回應標頭如何檢查對資源的存取權。
當金融公司頁面載入時,瀏覽器會向 dpm.demdex.net 提出要求。這是對 ID 服務所使用的資料收集伺服器 (DCS) 網域的呼叫。這個跨網域要求包含此標頭:
- Origin//www.finance-website.com
來自 DCS 網域的回應包括這些標頭,它們可授予此金融公司網站對所需資源的存取權:
- Access-Control-Allow-Origin: https://www.finance-website.com
- Access-Control-Allow-Credentials: true
另請參閱 useCORSOnly。
使用CORS的其他好處 section-6f44f30694c44f95bf9854b8a2af8449
下表探討了 CORS 為使用 ID 服務的客戶提供的一些優點。
CORS 會使用 XMLHttpRequest 來要求及傳輸資料。這個方法比 JSONP 要求更安全。它可確保沒有方法可執行任何 JavaScript (來自 DCS 的回應中可能會包含 JavaScript)。CORS XMLHttpRequest 要求裝載會由 ID 服務 JavaScript 剖析,而不只會在回呼函數中呼叫。
注意:為了接受 Cookie,XMLHttpRequest 物件的 withCredentials 屬性必須設定為 true。Chrome、Firefox、Internet Explorer (v10+)、Opera 和 Safari 都支援這個屬性。
CORS 基於以下原因有助於改善效能:
- 瀏覽器會管理資源要求。要求處理對 ID 服務而言是透明的。
- 不同於非同步 JSONP 要求,瀏覽器不會取消 CORS 要求的優先順序並將其排入佇列。
- ID 服務會在容許的程度內進行回應。這表示當以 Origin 傳入 URL 時,ID 服務會授予必要資源的頁面存取權限。