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

Noa*_*mpz 22 javascript google-chrome permission-denied getusermedia

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

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

phi*_*hag 52

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

因此,getUserMedia只能从安全的上下文中获得.对于测试,您可以通过启动Chrome 来免除您的域名--unsafely-treat-insecure-origin-as-secure="example.com",或者只是在下面进行测试http://localhost/.

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

暗示

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

  • 现在,您可以在Firefox中使用`getUserMedia()`,而在http上没有任何问题。真的是错误的吗?我觉得在Firefox的政策中允许这样的事情。 (2认同)

Way*_*you 22

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

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