web-dev-qa-db-fra.com

navigator.mediaDevices.getUserMedia ne fonctionne pas et webkitGetUserMedia non plus

J'ai utilisé la méthode webkitGetUserMedia (getUserMedia via adapter.js) pour obtenir le microhpone nad de la caméra pour webRTC sur mon application Web. Mon serveur n'est pas sécurisé (pas de certificat SSL). Tout a bien fonctionné jusqu'à ce que j'obtienne une erreur disant: "getUserMedia () ne fonctionne plus sur les origines non sécurisées. Pour utiliser cette fonctionnalité, vous devriez envisager de basculer votre application vers une origine sécurisée, telle que HTTPS. Voir https: //goo.gl/rStTGz pour plus de détails. "

J'ai googlé et j'ai vu que maintenant dans Chrome je dois utiliser navigator.mediaDevices.getUserMedia (). J'utilise Chrome 47.0.2526.80 m, et sur cette page https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia il dit que cette méthode devrait être prise en charge pour cette version. Cependant, lorsque j'appelle navigateur .mediaDevices.getUserMedia Je ne suis pas défini. Je ne peux donc plus utiliser aucune méthode dans Chrome.

Quelqu'un peut-il m'aider à résoudre ce problème? Merci

17
Michael P

Selon la nouvelle mise à jour chrome (de Google Chrome 47), getUserMedia () n'est plus pris en charge dans chrome navigateur sur http: // (origine non sécurisée), cela fonctionnera sur https: // (origine sécurisée)

À des fins de développement,

1.localhost est traité comme une origine sécurisée sur HTTP, donc si vous pouvez exécuter votre serveur à partir de localhost, vous devriez pouvoir tester la fonctionnalité sur ce serveur.

2.Vous pouvez exécuter chrome avec le --unsafely-treat-insecure-Origin-as-secure="http://example.com" flag (en remplaçant "example.com" par l'origine que vous voulez réellement tester), qui traitera cette origine comme sécurisée pour cette session. Notez que vous devez également inclure le --user-data-dir=/test/only/profile/dir pour créer un nouveau profil de test pour que l'indicateur fonctionne.

référence: https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins

33
Mohammed Safeer

La dernière mise à jour de Google Chrome fait que getUserMedia ne fonctionne que sur des origines sécurisées. Il existe une méthode pour le faire fonctionner, mais uniquement à des fins de développement. Il suffit d'exécuter chrome en utilisant cmd avec ces options

--unsafely-treat-insecure-Origin-as-secure = "example.com"

et cette option pour utiliser un nouveau profil utilisateur

--user-data-dir =/test/only/profile/dir

FYI getUserMedia fonctionne sur firefox jusqu'à présent, mais à mon avis, il recommandera une origine sécurisée comme google-chrome.

9
Kassav'

Vous pouvez toujours utiliser l'ancien nom de méthode dans Chrome 47, tant que vous utilisez https . Le changement de nom est orthogonale à la nouvelle exigence d'origine sécurisée de 47. Voir les autres réponses.

Sur les méthodes manquantes: navigator.mediaDevices.getUserMedia a été placé sous un drapea dans Chrome, vous devez donc soit activer chrome://flags/#enable-experimental-web-platform-features ou utilisez une version récente de adapter.js, comme ici: https://stackoverflow.com/a/34230983/91891 .

5
jib