Unity WebGL嵌入Next.js网站报错:HTTP连接不支持Brotli压缩
解决方案:Unity WebGL 嵌入 Next.js 出现 Brotli 压缩错误
问题根源
Unity 默认导出 WebGL 时会使用 Brotli 压缩资源,但 HTTP 连接(比如本地开发的 http://localhost 或非 HTTPS 部署环境)下,浏览器或服务器可能未正确支持 Brotli 压缩的资源传输,导致报错。
解决步骤
1. 直接关闭 Unity 的 Brotli 压缩(最简单方案)
- 打开 Unity 项目,进入 Build Settings > WebGL > Player Settings > Publishing Settings
- 找到 Compression Format,改为
Disabled或Gzip(Gzip 在 HTTP 环境兼容性更好) - 重新导出 WebGL 包,替换 Next.js
public文件夹里的旧游戏文件
2. 配置 Next.js 支持 Brotli 压缩资源
如果不想关闭压缩,可通过 Next.js 配置让服务器正确识别 Brotli 文件:
- 在项目根目录创建/修改
next.config.js,添加以下代码:/** @type {import('next').NextConfig} */ const nextConfig = { async headers() { return [ { source: '/:path*.br', headers: [ { key: 'Content-Encoding', value: 'br' }, { key: 'Content-Type', value: 'application/octet-stream' }, ], }, ]; }, }; module.exports = nextConfig; - 重启 Next.js 开发服务器,或重新部署生产环境
3. 检查 iframe 路径正确性
- 确保 iframe 的
src指向public文件夹内 WebGL 导出的index.html,例如游戏文件放在public/unity-game下,src 应为/unity-game/index.html - 本地开发必须用
npm run dev启动项目,不要直接打开 HTML 文件(避免file://协议的限制)
4. 生产环境部署补充
- 部署到 Vercel、Netlify 等平台时,默认支持 Brotli,只需确保导出的
.br文件正常上传即可 - 自行部署 Nginx 等服务器时,需配置服务器为
.br文件发送Content-Encoding: br响应头
内容的提问来源于stack exchange,提问作者Arthur Kaza
相关产品推荐
相关产品推荐

