You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter web通过IP访问时相机与麦克风权限被拦截,localhost正常如何解决?

问题根因

这是浏览器的默认安全策略限制:只有*安全上下文(Secure Context)*才允许调用相机、麦克风、定位等敏感系统权限。localhost被浏览器默认归类为安全上下文,所以可以正常调用权限;而普通HTTP协议的IP地址不属于安全上下文范畴,因此权限请求会被直接拦截。

解决方案

根据你的使用场景可以选择对应方案:

  • 本地局域网测试场景:启动Flutter Web调试服务时添加SSL参数,用HTTPS协议启动服务。执行命令:
    flutter run -d chrome --web-ssl --web-hostname 0.0.0.0
    
    同局域网设备通过https://IP:端口访问时,手动信任浏览器弹出的自签名证书风险警告后,即可正常申请相机、麦克风权限。
  • 临时快速测试场景:可以修改浏览器安全规则,将你的测试IP加入安全上下文白名单。以Chrome为例:
    1. 地址栏输入chrome://flags/#unsafely-treat-insecure-origin-as-secure打开配置页
    2. 下拉选项选择Enabled,输入框填入你的服务地址,例:http://192.168.1.2:8080
    3. 重启浏览器后即可生效,该方案仅适合开发测试使用,不要推广给普通用户。
  • 生产环境部署场景:给你的线上域名申请可信CA机构颁发的SSL证书,全链路使用HTTPS协议对外提供服务,即可自动满足安全上下文要求,权限可正常调用。

注意:如果使用了反向代理、CDN等中间服务,需要确保从用户终端到服务端的整个访问链路都是HTTPS协议,否则依然会被浏览器判定为非安全上下文拦截权限。

内容的提问来源于stack exchange,提问作者SuperDog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 16:45:01