2015-12-08 8 views
16

Я использую метод webkitGetUserMedia (getUserMedia через adapter.js), чтобы получить камеру над микроподом для webRTC в моем веб-приложении. Мой сервер не защищен (SSL-сертификат отсутствует). Все работало нормально, пока я не начал получать сообщение об ошибке: «getUserMedia() больше не работает с небезопасным происхождением. Чтобы использовать эту функцию, вам следует рассмотреть возможность переключения приложения на безопасное происхождение, например HTTPS. Подробнее см. В разделе« https://goo.gl/rStTGz ».navigator.mediaDevices.getUserMedia не работает, и не работает webkitGetUserMedia

Я googled, и я увидел, что теперь в Chrome мне нужно использовать navigator.mediaDevices.getUserMedia(). Я использую Chrome 47.0.2526.80 м, и на этой странице https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia говорится, что этот метод должен поддерживаться для этой версии. Однако, когда я вызываю navigator.mediaDevices.getUserMedia, я становлюсь неопределенным. Поэтому теперь я не могу использовать любой метод в Chrome.

Может кто-нибудь, пожалуйста, помогите мне в этом вопросе. Thanks

+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

Последнее обновление google-chrome делает работу getUserMedia только в безопасном источнике. Существует способ заставить его работать, но только для развивающихся целей. Просто запустите хром с помощью CMD с thoses вариантов

--unsafely лечи-небезопасные-происхождение-как-безопасный = "example.com"

и этот вариант, чтобы использовать новый профиль пользователя

--user-данных реж =/тест/только/профиль/реж

FYI GetUserMedia работа на светлячок до сих пор, но, на мой взгляд, он будет рекомендовать безопасное происхождение, например google-chrome.

27

В соответствии с новым обновлением хрома (от Google Chrome 47), GetUserMedia() больше не поддерживается в браузере Chrome через HTTP: // (небезопасное происхождение), он будет работать на https: // (Secure Origin)

Для целей развития,

1.localhost обрабатывается как безопасное происхождение по HTTP, поэтому, если вы можете запускать свой сервер с локального хоста, вы должны проверить его на этом сервере.

2.Вы можете запустить хром с флагом --unsafely-treat-insecure-origin-as-secure="http://example.com" (заменив «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 устарел. Но в то же время навигатор.MediaDevices.getUserMedia не определен! Итак, как один метод может стать устаревшим, если преемник не существует? Второй вопрос: если navigator.getUserMedia не будет работать над ненадежным происхождением, что будет? Только способ «-unsafely-treat-insecure-origin-as-secure =« example.com »? На naviagtor не было ясно. MediaDevices.getUserMedia будет ли этот новый метод работать на незащищенном происхождении или нет! –

+1

На самом деле Firefox продолжает поддерживать 'getUserMedia' по http: // – jib

+4

Он не работает для Chrome 48.0.2564.116 Chrome говорит: Вы используете неподдерживаемый флаг командной строки: -unsafely-treat-insecure-origin- as-secure – lega

4

Вы все еще можете использовать старое имя метода в Chrome 47, до тех пор, пока вы используете протокол HTTPS. Изменение имени ортогонально новому требованию 47 безопасного происхождения. См. Другие ответы.

На недостающих методах: navigator.mediaDevices.getUserMedia был поставлен back under a flag в Chrome, так что вы должны либо включить chrome://flags/#enable-experimental-web-platform-features или использовать последнюю версию adapter.js, как здесь: https://stackoverflow.com/a/34230983/918910.

Смежные вопросы