Adobe訪客ID服務的CORS支援 cors-support-in-the-experience-cloud-id-service
瀏覽器使用跨原始資源共用 (CORS) 來從目前網域以外的其他網域要求資源。 訪客ID服務支援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:指出資源是否可與要求者共用的回應標頭。
讓我們來看看這些標題如何運作。 在此範例中,假設有一家金融服務公司已在其網站上實作訪客ID服務, www.finance-website.com。 下表定義了 CORS 要求和回應標頭如何檢查對資源的存取權。
當金融公司頁面載入時,瀏覽器會向 dpm.demdex.net 提出要求。 這是對訪客ID服務所使用的資料收集伺服器(DCS)網域的呼叫。 這個跨網域要求包含此標頭:
Origin:https://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服務會授予必要資源的頁面存取權。