SharedArrayBuffer
Spectre対策で2018に無効化し、今は過渡期
これでatomicなメモリ操作
cross-origin isolation
他のoriginから完全に切り離された、安全な状態
有効にするには、いくつかの条件がある
現状は、COEPとCOOP
このヘッダをWebサーバーで提供する必要がある(COEP/COOP)
Cross-Origin-Embedder-Policy: require-corp
リソース側で、CORP, CORSでこのサイトがロードすることを許可していないとブロックされる
CORP: cross-originが設定してないリソースはブロック!
Cross-Origin-Resource-Policy
これを対応してもらうのは現実的でない
Cross-Origin-Opener-Policy: same-origin
window.openで新しいリンクを開いたときに、プロセスを使い回すか否か
same-originの場合のみ使い回す = cross originとはpostMessageができない
しかし制約がきつすぎるので、緩和する動き
単にSharedArrayBufferを使うだけなら、chromeならオリジントライアル(でプリケーショントライアル)で使うことができる
2021/04/29
Threading
WebAssembly support for the atomic instructions in the Threading specification, are enabled in Safari 14.1. Note, that until Safari supports the COEP/COOP headers, shared memory is not enabled as it could expose users to cross-origin Specter data leaks.
For more information, see the WebAssembly Specification for WASM Threads.
TP133でCOEP/COOPをサポートしてcross-origin isolationが有効になった
とはいえ制約がきつい。cross-originなりソースを諦めれば行けるけど
Safari 11でwasmがはいったらしい
2021/09/30
Enabled Cross-Origin-Opener-Policy / Cross-Origisn-EmbedderPolicy headers support (r282105, r282246)
2021/12/16
iOS 15.2でCOOP,COEPがサポート