不使用https的chrome 47中的getUserMedia()

时间:2015-12-10 09:08:17

标签: javascript google-chrome permission-denied getusermedia

在Chrome版本47中,它们强制您使用https来允许使用getUserMedia()。 不幸的是,我无法在我的整个网络中使用https,我只在登录休息中使用它(它是SPA - 单页应用程序)。因此,Web的地址没有https,只有登录休息使用ssl。 我使用这个repo只有很少的变化: https://github.com/Jmlevick/html-recorder

我的问题是,是否有任何方法可以在我的网络应用程序中使用录音机,并保持我的网址与http而不是https?你有什么想法来克服这个问题?

2 个答案:

答案 0 :(得分:41)

http://www.boost.org/doc/libs/1_59_0/doc/html/lockfree.html允许您收听用户的私人谈话。如果通过未加密的HTTP启用它,则会允许攻击者注入侦听的代码并将对话发送给攻击者。例如,如果您在酒店的私人会议室中使用未加密的WiFi,酒店附近的每个人都可以收听。即使您的应用通常不处理敏感对话,攻击者也可以用当他们正在使用另一个应用程序时,他们可以在以后收听。

因此,getUserMedia仅适用于getUserMedia。要通过--unsafely-treat-insecure-origin-as-secure="example.com"启动Chrome,或者只需在http://localhost/下进行测试,即可secure contexts进行测试。

如果您希望自己的应用听取用户的麦克风,则必须通过TLS提供。没有其他办法了。如果有,它将被视为安全漏洞并在下一版本的浏览器中修复。

<强> HINT

您可能必须在命令行中添加“http://”,例如: --unsafely-treat-insecure-origin-as-secure="http://example.com"

答案 1 :(得分:0)

您还可以通过打开chrome://flags并搜索unsafely-treat-insecure-origin-as-secure来添加白名单:

chrome://flags/#unsafely-treat-insecure-origin-as-secure