导航器MediaDevices getUserMedia notAllowedError

时间:2019-08-08 20:14:03

标签: firefox getusermedia

我突然发现不是一个月前的navigator.MediaDevices.getUserMedia notAllowedError。没有代码已更改。我正在使用firefox 68.01。当我在AWS上运行文件时出现问题,而在本地运行时却没有发生。我刷新了Firefox,但没有帮助。以安全模式启动无效。就像我说的那样,这以前可以正常工作,并且可以在本地工作,但不能在服务器上工作。我该如何解决?

“在当前上下文中,用户代理或平台不允许该请求”

1 个答案:

答案 0 :(得分:1)

getUserMedia现在甚至在Firefox中也需要安全连接(https)。

在Firefox 68中,这表现为NotAllowedError,这是Chrome直到最近的工作方式。

从Firefox 69开始,在不安全的连接(getUserMedia)中将完全不使用http方法,与spec和今天的Chrome工作方式相匹配。

http://localhost应该仍然可以使用,因为它现在被认为是安全的。

来自this Mozilla blog

  

Firefox 68行为

     

在Firefox 68中,getUserMedia仍将存在,但是从它返回的承诺将始终被NotAllowedError拒绝,而enumerateDevices将继续工作直到Firefox69。这与Chrome浏览器已经运行了一段时间(Chrome 74之前的版本)相匹配。 ),并且应该与网络高度兼容。这是Firefox 69的中间垫脚石。

     

Firefox 69行为

     

在Firefox 69中,getUserMedia和enumerateDevices都将引发TypeError。这与Chrome 74+和规格现在的工作方式相符。

     

值得指出的是,此TypeError异常将来自在不安全的上下文中缺少navigator.mediaDevices对象;或者,如果使用了回调,则来自不推荐使用的navigator.mozGetUserMedia函数。任何在调用navigator.mediaDevices.getUserMedia()之前未对此进行测试的JavaScript都将立即引发异常,而不仅仅是拒绝其诺言。与Firefox 68相比,这可能会影响周围的代码,因此需要两个步骤。