Chrome自动拦截麦克风,SpeechRecognition API网站测试遇阻求助
解决Chrome下未SSL网站测试SpeechRecognition API的麦克风权限问题
我刚帮朋友处理过几乎一模一样的问题,Chrome的安全政策确实会卡非SSL站点的麦克风权限——哪怕你手动去设置里加权限,它都不给你加非HTTPS站点的选项。用命令行参数启动是目前开发测试阶段最直接的办法,Mac下的操作步骤给你理得明明白白:
步骤1:彻底关闭所有Chrome进程
首先得确保Chrome完全关掉,包括后台挂着的进程,不然参数根本不会生效:
- 可以打开「活动监视器」,搜索Google Chrome,把所有相关进程都结束掉
- 嫌麻烦的话直接在终端跑命令:
pkill -9 Google\ Chrome
步骤2:用指定参数启动Chrome
打开终端,输入这条完整命令(注意路径和参数的空格转义):
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --disable-web-security --allow-file-access-from-files --user-data-dir="/tmp/chrome_dev_test"
给你拆解下每个参数的作用:
--disable-web-security:核心参数,关掉Chrome的跨域安全检查,同时会解除非SSL站点访问麦克风的限制--allow-file-access-from-files:如果你是直接打开本地file://协议的网页测试,这个参数能让页面正常访问本地资源和API--user-data-dir="/tmp/chrome_dev_test":必须加!Chrome不允许在默认用户数据目录下关闭安全设置,指定一个临时目录就不会污染你平时用的Chrome配置
重要提醒
- 这个模式只适合开发测试,绝对不要用它浏览普通网站,安全风险极高(比如会被恶意网站窃取数据)
- 测试完成后,直接关掉Chrome,然后可以删掉那个临时数据目录:
rm -rf /tmp/chrome_dev_test - 正式上线你的网站时,一定要启用SSL证书(哪怕是免费的Let's Encrypt证书),不然普通用户还是没法正常使用麦克风权限——毕竟Chrome的安全政策是不会为了个别站点破例的
内容的提问来源于stack exchange,提问作者ShellRox
相关产品推荐
相关产品推荐

