2012-12-05 71 views
17

我試圖在Chrome瀏覽器中使用navigator.getUserMedia;但是,在本地提供服務時(文件:///whatever/index.html),它並不請求許可,但在JSFiddle(http://jsfiddle.net/EBsvq/)和其他站點上提供。Chrome getUserMedia本地不請求權限

有誰知道這個的原因?我是否需要以某種方式重置我的權限?

下面是我使用本地:

<html> 
<head></head> 
<body> 
    <button id="btn">Start</button> 

<script type="text/javascript"> 
    /*! jQuery v1.8.3 jquery.com | jquery.org/license */ 
    //JQuery goes here 
</script> 

<script type="text/javascript"> 
    navigator.getUserMedia = navigator.webkitGetUserMedia || navigator.getUserMedia; 

    $(function(){ 
    $('#btn').click(function(){ 
     navigator.getUserMedia({audio: true}, 
     function(){ 
     alert('success'); 
     }, 
     function (err) { 
     alert('fail: ' + JSON.stringify(err)); 
     }); }); }); 
     </script> 
    </body> 
</html> 

回答

19

Chrome封鎖了很多關於file:/// URI的東西,而報告安全錯誤(如Geolocation)。如果您安裝了Python,請嘗試SimpleHTTPServer,您的最佳選擇是從本地網絡服務器運行。

+8

這是正確的:getUserMedia只適用於從服務器上的文件運行。它不會從file:// URLs工作。你會得到'PERMISSION_DENIED:1'錯誤,但這不是很直觀! –

+0

@SamDutton:我提交了一個錯誤報告,要求提供更直觀的錯誤消息:https://code.google.com/p/chromium/issues/detail?id=257104 – Gili

+0

@Gili:starred! –

14

在打開chrome以便能夠從本地文件系統使用getUserMedia時,可以使用命令行中的--allow-file-access-from-files標誌。

+0

比爲一個簡單的測試設置一個web服務器快得多 – MikeMurko

+0

我試過了,但它似乎沒有上班。我正在使用Chrome版本48.0.2564.116米。 – Moon

0

這是一個有點不平凡如何做OS X的命令行參數通常看起來像這樣

"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --allow-file-access-from-files 

如果你是像我這樣的怪胎,並把你的應用程序中​​,然後這將是

"/Users/yougohere/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --allow-file-access-from-files 

如果沒有那些處於工作狀態,然後鍵入chrome://version在Chrome地址欄中,它會告訴你什麼是「命令行」調用,你應該使用。只需添加--allow-file-access-from-files即可。

0

嘗試安裝簡單的服務器(重量輕),一個鍵安裝,可一旦它被安裝下載here

,請參閱該應用要運行的頁面。

1

我遇到了類似的問題,但與麥克風訪問有關。 如果您通過以下文件提供文件,Chrome會阻止設備訪問://(請注意,在Microsoft Edge和Firefox上,它通過file :: //工作)。

一個解決方案我已經找到了爲Chrome瀏覽器:

  1. 打開Chrome瀏覽器的輸入URL鉻://版/
  2. 複製「命令行」字段的值在命令行和追加 - 允許從文件訪問文件並運行它
  3. Chrome打開並輸入您的文件:// url。

對於啓動Chrome總是這樣,右鍵單擊Chrome圖標,然後單擊屬性。在快捷方式選項卡中追加所有命令行參數的目標值2.

+0

這工作在Chrome 50.0.2661.102! –