chrome 47 中的 getUserMedia() 不使用 https

getUserMedia() in chrome 47 without using https

在 chrome 版本 47 中,他们强制您使用 https 以允许使用 getUserMedia()。 不幸的是,我不能在我的整个网络中使用 https,我只在登录 rest 中使用它(它是一个 SPA - 单页应用程序)。因此,网络地址没有 https,只有登录其余部分使用 ssl。 我使用这个 repo 几乎没有什么变化: https://github.com/Jmlevick/html-recorder

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

getUserMedia 允许您窃听用户的私人对话。如果它是通过未加密的 HTTP 启用的,这将允许攻击者注入代码来侦听并将对话发送给攻击者。例如,如果您在酒店的私人会议室中使用未加密的 WiFi,酒店附近的每个人都可以窃听。即使您的应用通常不处理敏感对话,攻击者也可以将您的代码替换为他们的,以便稍后在使用另一个应用程序时收听。

因此,getUserMedia 只能从 secure contexts. For testing, you can exempt your domain 开始使用 Chrome 和 --unsafely-treat-insecure-origin-as-secure="example.com",或者简单地在 http://localhost/.

下测试

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

提示

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

您也可以通过打开 chrome://flags 并搜索 unsafely-treat-insecure-origin-as-secure:

添加白名单

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