2015-12-08 170 views
16

我一直使用webkitGetUserMedia方法(getUserMedia通過adapter.js)在我的web應用程序中爲webRTC獲取攝像頭nad microhpone。我的服務器不安全(沒有SSL證書)。它一切正常,直到我開始出現錯誤:「getUserMedia()不再適用於不安全的起源。要使用此功能,您應該考慮將您的應用程序切換到安全來源,例如HTTPS。有關更多詳細信息,請參閱https://goo.gl/rStTGznavigator.mediaDevices.getUserMedia無法正常工作,webkitGetUserMedia也不工作

我GOOGLE了,我看到現在在Chrome中我需要使用navigator.mediaDevices.getUserMedia()。我使用Chrome 47.0.2526.80米,並在此頁上說https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia它說這個方法應該支持這個版本。但是,當我調用navigator.mediaDevices.getUserMedia時,我得到未定義。所以現在我無法在Chrome中使用這兩種方法。

任何人都可以請幫我解決這個問題。 謝謝

+0

https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins。這些非https網站不會工作 – bleuscyther

+0

是的,我看到了,但是關於該方法的https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia它並沒有說什麼不工作在一個不安全的起源。 –

+0

事實上,它確實說,在腳註3爲Chrome。 – jib

回答

8

最後的谷歌鉻更新使得getUserMedia只能在安全的原點上工作。 有一種方法可以使其工作,但僅用於開發目的。 使用CMD與放入系統選項

--unsafely性治療不安全的原產地,如安全=「example.com」

與此選項可以使用新的用戶配置文件,只要運行鉻

的user-data-DIR = /測試/只/資料/ DIR

在Firefox FYI getUserMedia工作到現在爲止,但在我看來,它會推薦一個安全的來源,如谷歌瀏覽器。

27

根據新的chrome更新(來自Google Chrome 47),chrome瀏覽器不再支持getUserMedia()通過http://(Unsecure Origin),它將在https://(安全起源)上工作

用於開發目的,

1.本地主機被視爲通過HTTP的安全源,所以如果你能夠從本地主機運行你的服務器,你應該能夠測試該服務器上的功能。

2.您可以使用--unsafely-treat-insecure-origin-as-secure="http://example.com"標誌運行chrome(將「example.com」替換爲您實際想要測試的來源),這會將該來源視爲此會話的安全。請注意,您還需要包含--user-data-dir=/test/only/profile/dir以創建一個新的測試配置文件,以便標誌正常工作。

參考:https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins

+4

這實際上不是我的問題。我已經看到並閱讀了所有這些信息。我的問題是,正如我所看到的,navigator.getUserMedia已被棄用。但在同一時間navigator.MediaDevices.getUserMedia是未定義的!那麼當一個方法不存在時,一個方法怎麼會被棄用呢? 第二個問題是,如果navigator.getUserMedia不會在非安全來源的工作,你會?只有「--unsafely性治療不安全的原產地,如安全=」 example.com」的方式?目前尚不清楚在naviagtor.MediaDevices.getUserMedia新方法是否會在非安全來源或不行! –

+1

事實上,Firefox繼續通過http:// – jib

+4

支持'getUserMedia'它不適用於Chrome 48.0.2564.116 Chrome說: 您正在使用不受支持的命令行標誌:--unsafely-treat-insecure-origin-作爲安全 – lega

4

您仍然可以在Chrome 47,用舊方法名,只要你使用https。名稱更改與47新的安全來源要求正交。查看其他答案。

在缺少方法:navigator.mediaDevices.getUserMedia放入Chrome的back under a flag,所以您必須打開chrome://flags/#enable-experimental-web-platform-features或使用最新版本adapter.js的,喜歡這裏:https://stackoverflow.com/a/34230983/918910