Habilite threads Wasm (SharedArrayBuffer) com COOP/COEP
Se o seu jogo para web (ou a exportação da sua engine) usa threads do WebAssembly, ele geralmente depende de SharedArrayBuffer. Os navegadores modernos exigem isolamento entre origens para isso.
1) Verificação rápida: sua página está isolada?
Abra o DevTools e execute:
js
self.crossOriginIsolatedSe o resultado for true, você está no estado de segurança correto para usar SharedArrayBuffer.
Referência oficial:
https://developer.mozilla.org/docs/Web/API/Window/crossOriginIsolated
2) Os dois cabeçalhos necessários
Envie estes cabeçalhos de resposta no seu HTML (e, normalmente, em todo o seu aplicativo):
http
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corpReferências oficiais:
https://web.dev/articles/why-coop-coephttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBufferhttps://developer.chrome.com/blog/enabling-shared-array-buffer/
3) O principal motivo para “ainda não funcionar”: sub-recursos
Com COEP: require-corp, sua página não pode mais incorporar livremente recursos de outras origens.
Se você carregar um script, imagem, worker, vídeo ou outro recurso de uma origem diferente, esse recurso precisará autorizar o uso por meio de:
- CORS (
Access-Control-Allow-Origin) ou - CORP (
Cross-Origin-Resource-Policy)
Referência oficial:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Cross-Origin_Resource_Policy
4) Configurações para copiar e colar
Nginx
nginx
add_header Cross-Origin-Opener-Policy "same-origin" always;
add_header Cross-Origin-Embedder-Policy "require-corp" always;Node / Express
js
app.use((req, res, next) => {
res.setHeader('Cross-Origin-Opener-Policy', 'same-origin')
res.setHeader('Cross-Origin-Embedder-Policy', 'require-corp')
next()
})Cloudflare Pages (_headers)
txt
/*
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp5) Checklist de depuração
- Confirme se os cabeçalhos estão presentes na resposta do documento no painel Network.
- Verifique
self.crossOriginIsolated. - Procure solicitações bloqueadas (uma mensagem comum do DevTools inclui “blocked … by COEP”).
- Remova ou hospede por conta própria scripts de terceiros que não sejam compatíveis com CORS/CORP.
Conteúdo relacionado
- Publique um jogo para web que carregue rapidamente
- Stack tecnológica para jogos web em 2026
- Web Workers para a lógica do jogo — uso de Workers que se beneficiam do SharedArrayBuffer
- Noções básicas de jogos multijogador com WebSocket — jogos multijogador que precisam de isolamento entre origens
- Incorporação de jogos com iframe — como os cabeçalhos COOP/COEP afetam incorporações com iframe
Recursos externos
- MDN: Cross-Origin-Opener-Policy — referência do cabeçalho COOP
- MDN: Cross-Origin-Embedder-Policy — referência do cabeçalho COEP
- web.dev: Como isolar seu site entre origens — guia prático de implantação