Supporto per CORS nel servizio Experience Cloud Identity

I browser usano Cross Origin Resource Sharing (CORS) per richiedere risorse da un dominio diverso da quello corrente. Il servizio Experience Cloud Identity supporta gli standard CORS per consentire tali richieste di risorse lato client tra origini diverse. Il servizio ID utilizza invece le richieste JSONP nei browser più datati che non supportano CORS.

Problemi relativi a criteri per la stessa origine e richieste del servizio ID

I criteri per la stessa origine sono controlli di sicurezza o restrizioni applicati dal browser Web. Quando viene applicato a questo livello, il browser stesso determina se una richiesta di risorse effettuata da una pagina all’altra sarà consentita o bloccata. Per determinare se una richiesta è della stessa origine, il browser confronta:

  • URI (Uniform Resource Identifiers)
  • Nomi host (ad esempio, http://www.my-webpage-example.com)
  • Numeri di porta (ad esempio, porte 80 e 440 per le richieste HTTP e HTTPS)

Il browser consente una richiesta se entrambe le pagine condividono queste caratteristiche; in caso contrario, blocca le richieste di risorse.

CORS risolve i problemi relativi a criteri per la stessa origine

CORS offre un modo sicuro ed efficace per richiedere risorse tra domini diversi. La specifica CORS include un set di intestazioni HTTP utilizzate dai browser per inviare, ricevere e valutare richieste di risorse. La valutazione di una richiesta di risorse è detta preflight check. Questo controllo consente ai browser e ai server di determinare quali richieste sono consentite o bloccate. Il controllo preliminare è trasparente per l’app, l’API o lo script che richiede una risorsa. Due intestazioni importanti nel processo di richiesta delle risorse sono le seguenti:

  • Origin: intestazione di richiesta che identifica l'origine di una richiesta.
  • Access-Control-Allow-Origin: intestazione di richiesta che indica se una risorsa può essere condivisa con il richiedente.

Vediamo come funzionano queste intestazioni. In questo esempio, supponiamo che una società di servizi finanziari abbia implementato il servizio Experience Cloud ID sul suo sito, www.finance-website.com. La tabella seguente definisce il modo in cui le intestazioni di richiesta e risposta CORS verificano l’accesso a una risorsa.

Azione Descrizione

Richiesta

Al caricamento della pagina del sito della società di servizi finanziari, il browser invia una richiesta a dpm.demdex.net. Si tratta di una chiamata al dominio dei server di raccolta dati (DCS) utilizzati dal servizio ID. Questa richiesta tra domini diversi include l’intestazione:

  • Origin: https://www.finance-website.com

Risposta

La risposta dal dominio DCS include queste intestazioni che consentono al sito della società di servizi finanziari di accedere alle risorse richieste:

  • Access-Control-Allow-Origin: https://www.finance-website.com
  • Access-Control-Allow-Credentials: true

Vedi anche useCORSOnly.

Altri benefici di CORS

La tabella seguente descrive alcuni dei vantaggi offerti da CORS ai clienti che utilizzano il servizio ID.

Beneficio Descrizione

Maggiore sicurezza

CORS utilizza XMLHttpRequest per richiedere e trasferire i dati. Questo metodo è più sicuro di una richiesta JSONP. In questo modo si evita di eseguire JavaScript arbitrari che potrebbero essere contenuti nella risposta del DCS. Il payload di risposta XMLHttpRequest di CORS viene analizzato dal JavaScript del servizio ID e non semplicemente eseguito in una funzione di callback.

Nota: per accettare i cookie, la proprietà withCredentials dell'oggetto XMLHttpRequest deve essere impostata su true. Questa proprietà è supportata in Chrome, Firefox, Internet Explorer (v10+), Opera e Safari.

Miglioramenti delle prestazioni

CORS consente di migliorare le prestazioni perché:

  • Il browser gestisce le richieste di risorse. Il processo di richiesta è trasparente per il servizio ID.
  • A differenza delle richieste JSONP asincrone, il browser non toglie priorità e mette in coda le richieste CORS.
  • Il servizio ID risponde in modo permissivo. Questo significa che quando un URL viene passato come Origin, il servizio ID consente l'accesso alla pagina alle risorse richieste.

In questa pagina