【问题标题】:navigator MediaDevices getUserMedia notAllowedError导航器媒体设备 getUserMedia notAllowedError
【发布时间】:2019-08-08 20:14:03
【问题描述】:

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

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

【问题讨论】:

  • gUM 顽固地要求包含它的页面通过 TLS (https) 提供,否则它不起作用。有时从 localhost 移动到服务器会导致问题。
  • 是的,这就是问题所在。 Firefox 有一个 about:config 设置允许它工作。 media.getusermedia.insecure.enabled。我将其设置为 true,并且无需 http 即可使用它。
  • @techdog 从 Firefox 69 开始,您还需要设置 media.devices.insecure.enabled 以使该首选项工作。

标签: firefox getusermedia


【解决方案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 将继续工作直到 Firefox 69。这与 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 相比,这可能会影响周围的代码,因此需要两步处理。

【讨论】:

    猜你喜欢
    • 2022-08-21
    • 2018-10-30
    • 1970-01-01
    • 2013-04-26
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    • 2012-07-25
    相关资源
    最近更新 更多