Skip to content

COOP/COEP ile Wasm iş parçacıklarını (SharedArrayBuffer) etkinleştirin

Web oyununuz (veya oyun motoru çıktınız) WebAssembly iş parçacıkları kullanıyorsa çoğunlukla SharedArrayBuffer özelliğine ihtiyaç duyar. Modern tarayıcılar bunun için kaynaklar arası yalıtım gerektirir.

Şema: kaynaklar arası yalıtım başlıkları

1) Hızlı kontrol: Yalıtılmış durumda mısınız?

Geliştirici Araçları’nı açın ve şunu çalıştırın:

js
self.crossOriginIsolated

Sonuç true ise SharedArrayBuffer için doğru güvenlik durumundasınız.

Resmî referans:

  • https://developer.mozilla.org/docs/Web/API/Window/crossOriginIsolated

2) İhtiyacınız olan iki başlık

HTML yanıtınızda (ve genellikle uygulamanızın tamamında) şu yanıt başlıklarını sunun:

http
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp

Resmî referanslar:

  • https://web.dev/articles/why-coop-coep
  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer
  • https://developer.chrome.com/blog/enabling-shared-array-buffer/

3) “Hâlâ çalışmamasının” bir numaralı nedeni: alt kaynaklar

COEP: require-corp kullanıldığında sayfanız artık farklı kaynaklardan gelen içerikleri serbestçe gömemez.

Farklı bir kaynaktan betik, görsel, worker, video vb. yüklüyorsanız bu kaynağın aşağıdakilerden biri aracılığıyla açıkça izin vermesi gerekir:

  • CORS (Access-Control-Allow-Origin) veya
  • CORP (Cross-Origin-Resource-Policy)

Resmî referans:

  • https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Cross-Origin_Resource_Policy

4) Kopyala/yapıştır yapılandırmaları

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-corp

5) Hata ayıklama kontrol listesi

  • Ağ panelindeki belge yanıtında başlıkların bulunduğunu doğrulayın.
  • self.crossOriginIsolated değerini kontrol edin.
  • Engellenen istekleri arayın (Geliştirici Araçları’ndaki yaygın mesajlardan biri “blocked … by COEP” ifadesini içerir).
  • CORS/CORP desteği sunmayan üçüncü taraf betiklerini kaldırın veya kendi sunucunuzda barındırın.

İlgili içerikler

Harici kaynaklar