Javascript 在我的环境中,Firefox for Android中的麦克风权限始终被拒绝,但其他平台除外

Javascript 在我的环境中,Firefox for Android中的麦克风权限始终被拒绝,但其他平台除外,javascript,android,firefox,Javascript,Android,Firefox,我正在研制一台录音机。大约一周前,它停止了在多台设备上测试的Firefox for Android上的工作。它在桌面版firefox中运行良好。我已经把问题归结为权限问题。当我打电话时: navigator.mediaDevices.getUserMedia(constraints) .then(function(stream) { /* recording stuff happens */ }) .catch(func

我正在研制一台录音机。大约一周前,它停止了在多台设备上测试的Firefox for Android上的工作。它在桌面版firefox中运行良好。我已经把问题归结为权限问题。当我打电话时:

    navigator.mediaDevices.getUserMedia(constraints)
        .then(function(stream) {
          /* recording stuff happens */
        })
        .catch(function(err) {
          console.log("error: ",err)
        })
我得到一个错误:

MediaStreamError
​
constraint: ""
message: "The request is not allowed by the user agent or the platform in the current context."
name: "NotAllowedError"
stack: ""
然而,如果我在任何其他网站的控制台中运行相同的代码块,我不会得到这个错误

这显然也与麦克风权限有关。当我在其他网站的控制台上运行此代码块时,系统会提示我授予firefox录制权限。但出于某种原因,在我的网站上我从未见过这样的权限框

我原本以为这是因为我在Firefox for Android中更改了一些设置,但当我在其他运行FF for Android的手机上测试时,它也不起作用!我所处的环境显然影响了这一点。但我不知道从哪里开始寻找。关于这里发生了什么有什么假设吗


编辑:可能与此问题有关的更多详细信息,这是使用node.js开发的,并通过Heroku部署。一周前,它在手机上运行良好,但这个权限问题在代码库没有任何更改的情况下突然出现……很高兴提供更多详细信息

我通过在手机上使用HTTPS解决了这个问题。事实证明,您需要使用HTTPS在手机上调用getUserMedia(),但您可以在桌面上使用HTTP。解释了这种差异,我正在使用的其他提示mic权限的网站也使用了https

我通过在手机上使用https解决了这个问题。事实证明,您需要使用HTTPS在手机上调用getUserMedia(),但您可以在桌面上使用HTTP。解释差异,我正在使用的提示mic权限的其他站点也使用https,在地址栏中输入“about:config”,并将设置“media.devices.unsecure.enabled”和“media.getusermedia.unsecure.enabled”更改为true

这只能用于测试。如果Firefox是您的主浏览器,出于安全原因,我不建议更改这些设置。

在地址栏中输入“about:config”,然后将设置“media.devices.unsecure.enabled”和“media.getusermedia.unsecure.enabled”更改为true

这只能用于测试。如果Firefox是您的主浏览器,出于安全原因,我不建议更改这些设置