2015-12-08 16 views
16

Tôi đã sử dụng phương pháp webkitGetUserMedia (getUserMedia thông qua adapter.js) để có được máy ảnh nad microhpone cho webRTC trên ứng dụng web của tôi. Máy chủ của tôi không an toàn (không có chứng chỉ SSL). Tất cả đều hoạt động tốt cho đến khi tôi bắt đầu nhận được thông báo lỗi: "getUserMedia() không còn hoạt động trên nguồn gốc không an toàn. Để sử dụng tính năng này, bạn nên cân nhắc chuyển ứng dụng của mình sang nguồn gốc an toàn, chẳng hạn như HTTPS. Hãy xem https://goo.gl/rStTGz để biết thêm chi tiết."navigator.mediaDevices.getUserMedia không hoạt động và không phải webkitGetUserMedia

Tôi googled và tôi thấy rằng bây giờ trong Chrome tôi cần phải sử dụng navigator.mediaDevices.getUserMedia(). Tôi đang sử dụng Chrome 47.0.2526.80 m và trên trang này https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia nó nói rằng phương pháp này nên được hỗ trợ cho phiên bản này. Tuy nhiên khi tôi gọi navigator.mediaDevices.getUserMedia tôi nhận được không xác định. Vì vậy, bây giờ tôi không thể sử dụng một trong hai phương pháp trong Chrome.

Bất kỳ ai cũng có thể giúp tôi về vấn đề này. Cảm ơn

+0

https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins.Những điều này sẽ không hoạt động trên các trang không phải là https – bleuscyther

+0

Có, tôi thấy rằng, tuy nhiên trên https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia nó không nói bất cứ điều gì về phương pháp không hoạt động trên một nguồn gốc không an toàn. –

+0

Trên thực tế, nó nói rằng, trong chú thích chân trang 3 cho Chrome. – jib

Trả lời

8

Bản cập nhật google-chrome cuối cùng giúp getUserMedia chỉ hoạt động trên nguồn gốc an toàn. Có một phương pháp để làm cho nó hoạt động, nhưng chỉ cho mục đích phát triển. Chỉ cần chạy chrome sử dụng cmd với các tùy chọn thoses

--unsafely điều trị-insecure-gốc-như-an toàn = "example.com"

và tùy chọn này để sử dụng hồ sơ người dùng mới

--user-data-dir =/thử nghiệm/chỉ/profile/dir

việc FYI getUserMedia trên firefox cho đến bây giờ, nhưng theo ý kiến ​​của tôi, nó sẽ đề xuất một nguồn gốc an toàn như google-chrome.

27

Theo bản cập nhật chrome mới (Từ Google Chrome 47), getUserMedia() không còn được hỗ trợ trong trình duyệt chrome qua http: // (Không xuất xứ), Nó sẽ hoạt động trên https: // (Nguồn gốc an toàn)

Vì mục đích phát triển,

1.localhost được coi là nguồn gốc an toàn qua HTTP, vì vậy nếu bạn có thể chạy máy chủ từ máy chủ cục bộ, bạn có thể kiểm tra tính năng trên máy chủ đó.

2.Bạn có thể chạy chrome với cờ --unsafely-treat-insecure-origin-as-secure="http://example.com" (thay thế "example.com" bằng nguồn gốc bạn thực sự muốn kiểm tra), điều này sẽ coi nguồn gốc đó là an toàn cho phiên này. Lưu ý rằng bạn cũng cần phải bao gồm --user-data-dir=/test/only/profile/dir để tạo hồ sơ thử nghiệm mới để cờ hoạt động.

tham khảo: https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins

+4

Đó không phải là câu hỏi của tôi. Tôi đã xem và đọc tất cả thông tin này rồi. Câu hỏi của tôi là như tôi thấy, navigator.getUserMedia không còn được dùng nữa. Nhưng trong cùng một thời gian navigator.MediaDevices.getUserMedia là không xác định! Vậy làm thế nào một phương pháp có thể bị phản đối khi người thừa kế không tồn tại? Câu hỏi thứ hai là nếu navigator.getUserMedia không hoạt động trên nguồn gốc không an toàn, điều gì sẽ xảy ra? Chỉ có cách "--unsafely-treat-insecure-origin-as-secure =" example.com "không rõ ràng trên naviagtor.MediaDevices.getUserMedia cho dù phương thức mới đó có hoạt động trên nguồn gốc không an toàn hay không! –

+1

Trên thực tế, Firefox tiếp tục hỗ trợ 'getUserMedia' trên http: // – jib

+4

Tính năng này không hoạt động đối với Chrome 48.0.2564.116 Chrome nói: Bạn đang sử dụng cờ dòng lệnh không được hỗ trợ: --unsafely-treat-insecure-origin- an toàn – lega

4

Bạn vẫn có thể sử dụng tên phương pháp cũ trong Chrome 47, miễn là bạn sử dụng https. Sự thay đổi tên là trực giao với yêu cầu an toàn mới xuất xứ của 47. Xem các câu trả lời khác.

Trên các phương pháp còn thiếu: navigator.mediaDevices.getUserMedia được đưa back under a flag trong Chrome, vì vậy bạn phải hoặc là bật chrome://flags/#enable-experimental-web-platform-features hoặc sử dụng một phiên bản gần đây của adapter.js, như ở đây: https://stackoverflow.com/a/34230983/918910.

Các vấn đề liên quan