coep(cross-origin-embedder-policy)是强制启用跨域隔离的http响应头,必须显式配置require-corp值并配合coop才能使用sharedarraybuffer;meta标签无效,需服务端注入,且依赖corp/cors许可跨域资源。

COEP 是什么,为什么必须显式配置才能用 SharedArrayBuffer
浏览器从 Chrome 91 起默认禁用 SharedArrayBuffer,除非页面明确声明了 Cross-Origin-Embedder-Policy(COEP)且响应头生效。这不是前端 JS 能绕过的限制——哪怕你写了 new SharedArrayBuffer(1024),控制台也会报错:SharedArrayBuffer is not defined 或 Failed to construct 'SharedArrayBuffer': SharedArrayBuffer is not enabled。关键点在于:COEP 是 HTTP 响应头策略,HTML 的 <meta> 标签**完全无效**,必须由服务端注入。
服务端怎么配 COEP 响应头(Nginx / Express / Python Flask 示例)
COEP 必须通过 Cross-Origin-Embedder-Policy 响应头发送,值只能是 require-corp 或 credentialless(后者需配合 COOP cross-origin)。生产环境几乎只用 require-corp:
- Nginx:在
location块中加add_header Cross-Origin-Embedder-Policy "require-corp";,注意要同时加add_header Cross-Origin-Opener-Policy "same-origin";(否则 COEP 会拒绝加载) - Express(Node.js):
res.setHeader('Cross-Origin-Embedder-Policy', 'require-corp');,放在所有路由中间件之前 - Flask(Python):
response.headers['Cross-Origin-Embedder-Policy'] = 'require-corp',需确保 response 对象已创建
漏掉 Cross-Origin-Opener-Policy(COOP)会导致 COEP 失效,浏览器控制台报错:The Cross-Origin-Embedder-Policy header requires the Cross-Origin-Opener-Policy header to be set as well.
COEP 配置后,跨域资源加载失败怎么办
启用 require-corp 后,所有嵌入的跨域资源(<script src="https://cdn.example.com/app.js"></script>、<iframe src="https://embed.example.com"></iframe>、fetch("https://api.example.com"))必须满足 CORP(Cross-Origin-Resource-Policy)或 CORS 显式许可,否则直接被拦截。常见表现是白屏、脚本 406 错误、iframe 加载为空。
- 第三方脚本:要求对方在响应头中添加
Cross-Origin-Resource-Policy: cross-origin(或same-site),否则改用credentiallessCOEP(但需确认是否支持) - 自己托管的静态资源:在 Nginx 中为
.js、.wasm等文件类型加add_header Cross-Origin-Resource-Policy "cross-origin"; - fetch 请求:后端响应头必须含
Access-Control-Allow-Origin: *(或具体域名)+Access-Control-Allow-Credentials: false(若用 credentials: 'include',COEP 会拒绝)
本地开发时如何快速验证 COEP 是否生效
不要依赖 file:// 协议打开 HTML——COEP 在非 HTTP(S) 协议下不生效。必须用本地服务器:
- Python:运行
python3 -m http.server 8000 --bind 127.0.0.1,再访问http://127.0.0.1:8000 - VS Code Live Server 插件:启动后检查响应头是否有
Cross-Origin-Embedder-Policy - Chrome 控制台输入
self.crossOriginIsolated,返回true才表示 COEP + COOP 均生效;若为false,打开 Network 面板看主文档响应头是否缺失或拼写错误(注意大小写:是Cross-Origin-Embedder-Policy,不是crossoriginembedderpolicy)
最容易被忽略的是:即使服务端配了头,反向代理(如 Nginx 作前端)可能过滤掉自定义响应头,需确认 proxy_pass 配置中未丢弃 add_header 设置。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











