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.
- Apri Chrome
DevTools nella pagina che sospetti possa utilizzare
SharedArrayBuffer. - Seleziona il riquadro Console.
- 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
- Il nome file e il numero di riga alla fine del messaggio (ad esempio,
common-bundle.js:535) indicano da dove provieneSharedArrayBuffer. 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.
(Avanzato) Utilizzare i report sul ritiro
Alcuni browser hanno una funzionalità di reporting delle API in fase di ritiro a un endpoint specificato.
- Configura un server di report sul ritiro e recupera l'URL di reporting. Puoi farlo utilizzando un servizio pubblico o creandone uno tuo.
- 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"}]} - 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.
- Imposta
Cross-Origin-Opener-Policy-Report-Only: same-originnel documento di primo livello. Come indica il nome, questa intestazione invia solo report sull'impatto cheCOOP: same-originavrebbe sul tuo sito. Non disabilita la comunicazione con le finestre popup. - Configura i report e un server web per ricevere e salvare i report.
- Imposta
Cross-Origin-Embedder-Policy-Report-Only: require-corpnel documento di primo livello. Anche in questo caso, questa intestazione ti consente di visualizzare l'impatto dell'attivazione diCOEP: require-corpsenza 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:
- Nelle risorse multiorigine come immagini, script, fogli di stile, iframe e
altro ancora, imposta l'
Cross-Origin-Resource-Policy:cross-originintestazione. Nelle risorse dello stesso sito, impostaCross-Origin-Resource-Policy:same-siteintestazione. - Per le risorse caricabili tramite CORS, assicurati che sia attivato impostando l'
crossoriginattributo nel tag HTML (ad esempio,<img src="example.jpg" crossorigin>). Per la richiesta di recupero JavaScript, assicurati cherequest.modesia impostato sucors. - Se vuoi utilizzare funzionalità avanzate come
SharedArrayBufferall'interno di un iframe caricato, aggiungiallow="cross-origin-isolated"a<iframe>. - 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.
- Una volta confermato che tutte le risorse multiorigine hanno attivato l'opzione, imposta l'intestazione
Cross-Origin-Embedder-Policy: require-corpsu script iframe e worker (è obbligatorio indipendentemente dall'origine o dall'origine diversa). - 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:
- Imposta l'intestazione
Cross-Origin-Opener-Policy: same-originnel documento di primo livello. Se hai impostatoCross-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. - Imposta l'intestazione
Cross-Origin-Embedder-Policy: require-corpnel documento di primo livello. Se hai impostatoCross-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. - Controlla che
self.crossOriginIsolatedrestituiscatruenella console per verificare che la pagina sia con isolamento multiorigine.