Una guida per attivare l'isolamento multiorigine

L'isolamento multiorigine consente a una pagina web di utilizzare funzionalità avanzate come SharedArrayBuffer. Questo articolo spiega come attivare l'isolamento multiorigine sul tuo sito web.

Questa guida mostra come attivare l'isolamento multiorigine. L'isolamento multiorigine è necessario se vuoi utilizzare SharedArrayBuffer, performance.measureUserAgentSpecificMemory(), o il timer ad alta risoluzione con una precisione migliore.

Se intendi attivare l'isolamento multiorigine, valuta l'impatto che avrà su altre risorse multiorigine del tuo sito web, ad esempio i posizionamenti degli annunci.

Determinare dove viene utilizzato SharedArrayBuffer nel tuo sito web

A partire da Chrome 92, le funzionalità che utilizzano SharedArrayBuffer non funzioneranno più senza l'isolamento multiorigine. Se hai visitato questa pagina a causa di un messaggio di ritiro di SharedArrayBuffer, è probabile che il tuo sito web o una delle risorse incorporate utilizzi SharedArrayBuffer. Per assicurarti che non si verifichino interruzioni sul tuo sito web a causa del ritiro, inizia identificando dove viene utilizzato.

Se non sai dove viene utilizzato SharedArrayBuffer nel tuo sito, puoi scoprirlo in due modi:

  • Utilizzare Chrome DevTools
  • (Avanzato) Utilizzare i report sul ritiro

Se sai già dove utilizzi SharedArrayBuffer, vai ad Analizzare l'impatto dell'isolamento multiorigine.

Utilizzare Chrome DevTools

Chrome DevTools consente agli sviluppatori di ispezionare i siti web.

  1. Apri Chrome DevTools nella pagina che sospetti possa utilizzare SharedArrayBuffer.
  2. Seleziona il riquadro Console.
  3. Se la pagina utilizza SharedArrayBuffer, verrà visualizzato il seguente messaggio:
    [Deprecation] SharedArrayBuffer will require cross-origin isolation as of M92, around May 2021. See  for more details. common-bundle.js:535
  4. Il nome file e il numero di riga alla fine del messaggio (ad esempio, common-bundle.js:535) indicano da dove proviene SharedArrayBuffer. Se si tratta di una libreria di terze parti, contatta lo sviluppatore per risolvere il problema. Se è implementato come parte del tuo sito web, segui la guida riportata di seguito per attivare l'isolamento multiorigine.
Avviso della console DevTools quando SharedArrayBuffer viene utilizzato senza isolamento multiorigine.
Avviso della console di DevTools quando SharedArrayBuffer viene utilizzato senza isolamento multiorigine.

(Avanzato) Utilizzare i report sul ritiro

Alcuni browser hanno una funzionalità di reporting delle API in fase di ritiro a un endpoint specificato.

  1. Configura un server di report sul ritiro e recupera l'URL di reporting. Puoi farlo utilizzando un servizio pubblico o creandone uno tuo.
  2. Utilizzando l'URL, imposta la seguente intestazione HTTP sulle pagine che potenzialmente pubblicano SharedArrayBuffer.
    Report-To: {"group":"default","max_age":86400,"endpoints":[{"url":"THE_DEPRECATION_ENDPOINT_URL"}]}
  3. Una volta che l'intestazione inizia a propagarsi, l'endpoint a cui ti sei registrato dovrebbe iniziare a raccogliere i report sul ritiro.

Consulta un'implementazione di esempio.

Analizzare l'impatto dell'isolamento multiorigine

Non sarebbe fantastico se potessi valutare l'impatto dell'attivazione dell'isolamento multiorigine sul tuo sito senza causare interruzioni? Le intestazioni HTTP Cross-Origin-Opener-Policy-Report-Only e Cross-Origin-Embedder-Policy-Report-Only ti consentono di farlo.

  1. Imposta Cross-Origin-Opener-Policy-Report-Only: same-origin nel documento di primo livello. Come indica il nome, questa intestazione invia solo report sull'impatto che COOP: same-origin avrebbe sul tuo sito. Non disabilita la comunicazione con le finestre popup.
  2. Configura i report e un server web per ricevere e salvare i report.
  3. Imposta Cross-Origin-Embedder-Policy-Report-Only: require-corp nel documento di primo livello. Anche in questo caso, questa intestazione ti consente di visualizzare l'impatto dell'attivazione di COEP: require-corp senza influire ancora sul funzionamento del tuo sito. Puoi configurare questa intestazione per inviare report allo stesso server di reporting configurato nel passaggio precedente.

Attenuare l'impatto dell'isolamento multiorigine

Dopo aver determinato quali risorse saranno interessate dall'isolamento multiorigine, ecco le linee guida generali su come attivare effettivamente l'opzione per queste risorse multiorigine:

  1. Nelle risorse multiorigine come immagini, script, fogli di stile, iframe e altro ancora, imposta l'Cross-Origin-Resource-Policy:cross-origin intestazione. Nelle risorse dello stesso sito, imposta Cross-Origin-Resource-Policy:same-site intestazione.
  2. Per le risorse caricabili tramite CORS, assicurati che sia attivato impostando l'crossorigin attributo nel tag HTML (ad esempio, <img src="example.jpg" crossorigin>). Per la richiesta di recupero JavaScript, assicurati che request.mode sia impostato su cors.
  3. Se vuoi utilizzare funzionalità avanzate come SharedArrayBuffer all'interno di un iframe caricato, aggiungi allow="cross-origin-isolated" a <iframe>.
  4. Se le risorse multiorigine caricate in script iframe o worker coinvolgono un altro livello di script iframe o worker, applica in modo ricorsivo i passaggi descritti in questa sezione prima di procedere.
  5. Una volta confermato che tutte le risorse multiorigine hanno attivato l'opzione, imposta l'intestazione Cross-Origin-Embedder-Policy: require-corp su script iframe e worker (è obbligatorio indipendentemente dall'origine o dall'origine diversa).
  6. Assicurati che non ci siano finestre popup multiorigine che richiedono la comunicazione tramite postMessage(). Non è possibile mantenerle attive quando è attivato l'isolamento multiorigine. Puoi spostare la comunicazione in un altro documento che non è con isolamento multiorigine oppure utilizzare un metodo di comunicazione diverso (ad esempio, richieste HTTP).

Attivare l'isolamento multiorigine

Dopo aver attenuato l'impatto dell'isolamento multiorigine, ecco le linee guida generali per attivare l'isolamento multiorigine:

  1. Imposta l'intestazione Cross-Origin-Opener-Policy: same-origin nel documento di primo livello. Se hai impostato Cross-Origin-Opener-Policy-Report-Only: same-origin, sostituiscila. In questo modo viene bloccata la comunicazione tra il documento di primo livello e le relative finestre popup.
  2. Imposta l'intestazione Cross-Origin-Embedder-Policy: require-corp nel documento di primo livello. Se hai impostato Cross-Origin-Embedder-Policy-Report-Only: require-corp, sostituiscila. In questo modo verrà bloccato il caricamento delle risorse multiorigine per cui non è stata attivata l'opzione.
  3. Controlla che self.crossOriginIsolated restituisca true nella console per verificare che la pagina sia con isolamento multiorigine.

Risorse