Cordova:getUserMedia()不再适用于不安全的起源

问题描述 投票:0回答:1

情况

在我的Cordova混合应用程序(使用Quasar框架构建)中,我需要添加视频通话功能。

我需要使用函数getUserMedia()

在localhost上测试时一切正常,但在设备上测试时它不起作用。

错误:

[Deprecation] getUserMedia() no longer works on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS.

很可能这个错误是由Cordova不在https上运行引起的。

尝试:

我尝试过在Google上找到的所有东西,但没有任何效果......

人行横道:

我见过有人建议安装crosswalk插件。我试过但没有改变。

权限:

我曾尝试使用android-permissions插件请求许可。

但是当它提示请求时,尽管点击了ALLOW按钮,权限被设置为DENIED_ALWAYS ...

我曾尝试使用diagnostic cordova插件,但结果是一样的

问题:

如何在cordova应用程序中使用getUserMedia()

编辑 - 解决方案:

@Andre解决方案是问题的正确解决方案。

我在设备的开发环境中运行应用程序时遇到了这个错误。 Quasar在192.168.0.18上运行我的devServer,这与localhost不同,因此不被识别为安全。

通过在配置中设置https: true,该问题已得到解决。

构建应用程序后,Cordova在file://上运行,并且在file://协议上没有不安全的原始问题,正如@jcesarmobile在评论中所指出的那样。

我在构建时仍然存在问题,但与此问题本身无关,但涉及权限,我设法使用cordova-plugin-android-permissions插件解决它们。

javascript android cordova getusermedia quasar-framework
1个回答
1
投票

你不能。

http://(Unsecure Origin)不再支持使用getUserMedia(),它仅适用于https://(Secure Origin)

  • 出于开发目的,localhost被视为HTTP上的安全源,因此如果您能够从localhost运行服务器,则应该能够在该服务器上运行。这就是为什么它适用于使用locahost的情况。
  • 出于生产目的,请考虑使用HTTPS。您可以获得免费的SSL证书using Let's encrypt

使用Quasar框架,您可以通过编辑quasar.conf.js文件来使用Webpack over HTTPS。 Here are allowed parameters

// quasar.conf.js
devServer: {
    https: true
}

它将使用自签名证书。

如果要使用自己的证书,请使用以下内容:

// quasar.conf.js
devServer: {
  https: {
      key: fs.readFileSync('/path/to/server.key'),
      cert: fs.readFileSync('/path/to/server.crt'),
      ca: fs.readFileSync('/path/to/ca.pem'),
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.