Flutter Web如何启动HTTPS服务运行调试以调用麦克风权限
Flutter Web 直接启动HTTPS调试服务的实现方式
完全可以通过flutter run命令直接启动支持HTTPS的调试服务,保留热重载/热重启能力,不需要每次全量构建后部署到IIS,能彻底解决小改动等待构建时间过长的问题。
方案一:使用Flutter内置TLS参数启动(无额外依赖)
Flutter 3.0以上版本的web调试服务原生支持传入TLS证书配置,启动命令如下:
flutter run -d chrome --web-hostname 0.0.0.0 --web-port 自定义调试端口 --web-tls-cert-path=本地SSL证书crt文件路径 --web-tls-key-path=本地SSL证书私钥key文件路径
- 证书可以直接复用你IIS站点已经配置的HTTPS证书,将带私钥的证书导出后拆分为独立的crt证书文件和key私钥文件即可。
- 首次访问时如果Chrome提示证书不受信任,直接点击高级选项选择继续访问即可,该场景下Chrome会将站点判定为安全上下文,麦克风、摄像头等敏感权限API不会被拦截。
- 该模式下完整支持Flutter的热重载、断点调试能力,代码改动后毫秒级生效,不需要等待全量构建。
- debug模式默认关闭了Dart2js的激进优化,不需要额外加
Dart2jsOptimization=O0参数就能满足调试需求。
方案二:复用现有IIS HTTPS环境做反向代理
如果不想拆分证书文件,可以直接复用你已经配置好的IIS HTTPS站点做转发:
- 先正常启动HTTP版本的调试服务:
flutter run -d chrome --web-port 8080,此时服务运行在本地8080端口 - 在IIS对应HTTPS站点上配置反向代理规则,将所有请求转发到
http://localhost:8080,记得开启代理的WebSocket支持,否则热重载的长连接会断连 - 之后直接访问你原来的IIS HTTPS地址就能访问调试服务,同样支持热重载,不需要每次构建产物部署。
注意:不要用
--release模式启动调试,release模式会开启全量优化,不仅启动慢,也不支持热重载和断点调试。
内容的提问来源于stack exchange,提问作者Regular Jo
相关产品推荐
相关产品推荐

