Почему Chrome не отображает подсказку с разрешением "Разрешить" или "Запретить" на микрофон и веб-камеру?

Я создал простой видеочат с SimpleWebRTC, и когда я запускаю WebRTC на Ubuntu, Chrome 34 показывает мне приглашение с разрешением Разрешить или Запретить на микрофон и веб-камеру. Я нажимаю кнопку "Разрешить" и могу начать разговор, даже если у меня нет веб-камеры.

Но когда я запускаю WebRTC в Windows 7, Chrome 33 не показывает никаких подсказок. Но я вижу значок перекрестной веб-камеры в адресной строке. И когда я пытаюсь разрешить Chrome использовать микрофон и веб-камеру, он перезагружается. Итак, что мне нужно сделать для показа подсказки, как в Linux?

Мой код:

    webrtc = new SimpleWebRTC({
        // the id/element dom element that will hold "our" video
        localVideoEl: 'publishers',
        // the id/element dom element that will hold remote videos
        remoteVideosEl: 'subscribers',
        // immediately ask for camera access
        autoRequestMedia: true
    });
    webrtc.on('readyToCall', function () {
        webrtc.joinRoom(sessionId);
    });

Также я могу воспроизвести его с помощью demo. Я получил следующее сообщение об ошибке в этом демонстрационном приложении:

Не удалось получить доступ к локальным медиа. Имя ошибки PermissionDeniedError. Продолжение без отправки потока.

Ответ 1

Похоже, вы заблокировали домен, когда-либо запрашивающий доступ к медиа. Вы можете удалить это исключение из настроек Chrome.

Откройте Chrome Настройки, а затем перейдите к:

Настройки > Конфиденциальность (в расширенных настройках) > Нажмите Настройки контента. > Нажмите Управление исключения...

Убедитесь, что для вашего домена нет значения Блокировать для аудио/видео. Вы можете удалить запись для заблокированного домена, если она существует.

Ответ 2

В Chrome 59 появилась новая функция безопасности:

Временно прекратить запросы на разрешение после 3 увольнений безопасности

Временно прекратите запрашивать разрешение у источника после третьего отклонения запроса на разрешение. Остановка будет снята по прошествии некоторого времени (первоначально 1 неделя), после чего источник может запросить разрешение снова. При дальнейшем увольнении снова будет применена временная остановка.

Для веб-разработчиков, которые тестируют функции, блок также можно удалить, изменив настройку разрешений в диалоговом окне информации о значке замка или очистив данные о просмотре.

Источник: https://www.chromestatus.com/features/6443143280984064

Ответ 3

У меня была точно такая же настройка SimpleWebRTC, и она не работала как в Chrome, так и в Firefox, и у меня явно не было одобрений/увольнений, сделанных ранее (что может быть причиной, по которой браузеры не спрашивают), но я получал доступ к своей локальной среде разработчика без https и большинство современных браузеров блокируют передачу изображения и звука, записанных устройством, только по HTTP. Просто добавив "https", я добился цели.