本地Chrome运行Flutter遇gstatic canvaskit CORS错误,Linux运行正常
解决Flutter Web在Chrome中运行的Canvaskit CORS错误
问题原因
这个请求是Flutter Web自动发起的——Canvaskit是Flutter Web默认采用的Skia Web渲染引擎,框架会自动从Google的CDN拉取对应的wasm文件,你的代码里自然找不到相关URL。而Linux桌面端用的是本地Skia库,不需要网络拉取资源,所以没有这个问题。
解决方法
1. 本地开发临时绕开CORS(仅用于开发环境)
启动Chrome时禁用Web安全检查,命令如下:
- Windows:
chrome.exe --disable-web-security --user-data-dir="C:/ChromeDevSession" - Linux:
google-chrome --disable-web-security --user-data-dir=/tmp/chrome_dev - macOS:
open -n -a "Google Chrome" --args --disable-web-security --user-data-dir=/tmp/chrome_dev
注意:这个方式会关闭Chrome的安全防护,仅用于开发测试,不要用这个窗口浏览正常网站。
2. 配置Flutter使用本地Canvaskit资源
完全避免从CDN拉取,改用本地文件:
- 下载对应版本的Canvaskit包(版本号就是你报错URL里的
7572fe5b922634eb20b8ec4ad65646e6a356feb4),解压后把所有文件放到项目的web/canvaskit目录下。 - 在
pubspec.yaml中添加资源配置:flutter: assets: - canvaskit/ - 启动项目时指定本地资源路径:
flutter run -d chrome --dart-define=FLUTTER_WEB_CANVASKIT_URL=./canvaskit/
3. 检查网络代理设置
如果你的机器开启了代理工具(比如VPN、翻墙插件、本地代理),可能会拦截gstatic的请求,导致返回的响应缺失CORS头。尝试关闭代理,或者将gstatic.com加入代理的白名单。
内容的提问来源于stack exchange,提问作者Aseem
相关产品推荐
相关产品推荐

