Show Menu
TOPICS×

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 vengono applicati a questo livello, il browser stesso determina se consentire o bloccare una richiesta di risorse effettuata da una pagina a un'altra. Per determinare se una richiesta proviene dalla stessa origine, il browser confronta:
  • URI (Uniform Resource Identifiers)
  • Nomi host (esempio: http://www.esempio-mia-pagina-web.com)
  • Numeri di porta (esempio: porte 80 e 440 per le richieste HTTP e HTTPS)
Il browser consente una richiesta se entrambe le pagine hanno le stesse caratteristiche; in caso contrario la richiesta viene bloccata.

CORS risolve i problemi relativi a criteri per la stessa origine

CORS offre un modo sicuro ed efficace di richiedere risorse tra domini diversi. La specifica CORS include un set di intestazioni HTTP usate dai browser per inviare, ricevere e valutare le richieste di risorse. La valutazione di una richiesta di risorse è detta
preflight check
. Tale verifica permette ai browser e ai server di determinare quali richieste consentire o bloccare. La verifica preliminare è trasparente per l'app, l'API o lo script che richiede una risorsa. Due intestazioni importanti nel processo di richiesta di risorse sono:
  • 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 che segue illustra come le intestazioni di richiesta e risposta CORS verificano se consentire o meno 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) utilizzato dal servizio ID. La 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 di CORS per gli utenti che usano il servizio ID.
Beneficio
Descrizione
Maggiore sicurezza
CORS usa XMLHttpRequest per richiedere e trasferire i dati. Questo metodo è più sicuro di una richiesta JSONP. Impedisce che possano essere eseguiti JavaScript arbitrari eventualmente presenti nella risposta ricevuta dal DCS. Il payload di risposta XMLHttpRequest di CORS viene analizzato dal JavaScript del servizio ID e non viene 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 su Chrome, Firefox, Internet Explorer (v10+), Opera e Safari.
Prestazioni migliori
CORS permette di migliorare le prestazioni perché:
  • Il browser gestisce le richieste delle risorse. Il processo di richiesta è trasparente per il servizio ID.
  • A differenza delle richieste JSONP asincrone, il browser non modifica la priorità e non 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.