【问题标题】:localmedia access restricted until user interacts with the page in firefox本地媒体访问受限,直到用户与 Firefox 中的页面交互
【发布时间】:2019-04-11 09:21:49
【问题描述】:

我已授予允许在我的域中使用麦克风的权限。我们在多个选项卡中使用我们的域。当我在同一个选项卡中访问时,我能够获取本地媒体(麦克风)。但是我无法在不访问该选项卡的情况下在另一个选项卡(同一域)中获取 WebRTC 的本地媒体。只有在访问该选项卡后才能获取本地媒体访问权限。

是为了安全和隐私而故意这样做的吗? .有什么办法可以解决我的问题吗?

原因:限制用于 WebRTC 会话的资源。我们将 WebRTC 会话保留在我们域的单个选项卡中,并且仅使用该资源对所有选项卡进行调用。

尝试将麦克风允许设置为 iframe 属性。但这并没有解决问题。不过,它在 GoogleChrome 浏览器中运行良好。如果我打开一个新选项卡(T1)并在其中启动 webrtc 并从另一个选项卡(T2)进行 webrtc 调用而不访问选项卡 T1 ,除非我访问 T1,否则呼叫会在 chrome 中连接,但不会在 firefox 中。

注意:在域中允许麦克风不是请求权限,它会自动获取它。只是它只有在我访问选项卡后才会获得。我已经授予了我的域的麦克风访问权限。

【问题讨论】:

  • 这就是为什么,而且是故意的。你的用例是什么?你想监视谁? ;)
  • 我们的应用程序中有 WebRTC 调用,由于某些限制,我们不能有超过 5 个连接。因此我们有一个连接并在选项卡之间共享它。假设用户打开了多个选项卡并从一个没有连接的选项卡发起呼叫,然后呼叫不会连接,直到用户访问有连接的选项卡。这里的问题是,用户不知道有连接的选项卡,因此可能根本不知道。

标签: javascript firefox webrtc media


【解决方案1】:

这是为了安全和隐私而故意这样做的吗?

是的,这是为了防止后台标签随意打开相机或麦克风来监视用户。因为那太可怕了。我相信 Safari 也是如此。

getUsermedia specification 最近将此作为要求

  • 步骤 6.1。 “用户代理必须等到当前设置对象的负责文档完全激活并获得焦点后才能继续下一步。”*

所以我希望 Chrome 很快就会效仿。

有什么办法可以解决我的问题吗?

这将大大破坏保证。

用户可以放心,只有当前聚焦的标签才能打开摄像头或麦克风。

如果我打开一个新选项卡 (T1) 并在其中启动 webrtc 并从另一个选项卡 (T2) 进行 webrtc 调用,而无需访问选项卡 T1 ,除非我访问 T1,否则呼叫会在 chrome 中连接,但不会在 firefox 中。

这是一个 RTCPeerConnection connection 问题,它与 getUserMedia 是分开的。

解决方法是不阻止在麦克风访问时建立连接。

您没有理由不能先连接,然后再添加麦克风。

或者提前获取麦克风,稍后再连接。基本上,这两个动作不需要重合或相互阻碍。

【讨论】:

  • WebRTC 连接已经存在。该域也已获得麦克风权限。问题是只有在用户聚焦选项卡后才会自动获取媒体访问权限。
  • 用户可以放心,只有当前聚焦的选项卡才能打开摄像头或麦克风——这说明了问题。谢谢你
猜你喜欢
  • 1970-01-01
  • 2022-09-30
  • 1970-01-01
  • 1970-01-01
  • 2011-10-15
  • 2021-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多