【報錯】(webRTC):navigator.mediaDevices undefined

最近做了一個通過webRTC實現在線視頻功能的網頁,在自己的電腦上用localhost打開兩個網頁是沒問題的,但是設置了一個簡單的HTTP請求的NodeJS服務器之後,在局域網中用ip地址訪問就不行了,瀏覽器會彈出 navigator.mediaDevices undefined 的錯誤。

網上搜了蠻多的,終於找到了原因:

通過 MediaDevices.getUserMedia() 獲取用戶多媒體權限時,需要注意其只工作於以下三種環境:

  • localhost 域
  • 開啓了 HTTPS 的域
  • 使用 file:/// 協議打開的本地文件

如果當前文檔未安全加載,navigator.mediaDevices 將爲 undefined,並且不能使用getUserMedia()。

所以對應的解決方案也出來了:

1. 創建HTTPS服務器,用HTTPS協議的方式發送請求。

2. 在HTTP服務器上,可設置Chrome 的相應參數:

  • 在chrome瀏覽器的地址欄中輸入: chrome://flags/#unsafely-treat-insecure-origin-as-secure,將該 flag 切換成 enable 狀態;
  • 在輸入框中填寫需要開啓的域名或地址,如果有多個,則以逗號分隔;
  • 重啓瀏覽器後生效。

第二種方式只適合自己測試用,親測可行~ 撒花~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章