Hilfe-Anleitung · Mikrofontest
So beheben Sie „SecurityError“ und „navigator.mediaDevices is undefined“
Browser erlauben den Zugriff auf Mikrofon und Kamera nur auf sicheren Seiten. Beginnt die Adresse mit http:// statt https://, oder liegt die Seite in einem Frame ohne Berechtigung, wirft der Browser SecurityError oder verbirgt navigator.mediaDevices ganz, was „TypeError: Cannot read properties of undefined (reading getUserMedia)“ auslöst. Die Lösung ist eine sichere Adresse.
Checkliste für die schnelle Lösung
- 1Prüfen Sie die Adressleiste. Die Seite sollte mit https:// beginnen oder localhost sein.
- 2Ändern Sie http:// in der Adresse zu https:// oder öffnen Sie die Seite erneut über einen sicheren Link.
- 3Befinden Sie sich in einer App oder eingebetteten Ansicht, öffnen Sie die Seite in einem normalen Browser-Tab.
- 4Erlauben Sie Mikrofon und Kamera für die Seite, laden Sie neu und drücken Sie erneut auf Prüfen.
- 5Wenn Sie die Seite selbst betreiben, installieren Sie ein Zertifikat und leiten Sie jeglichen http-Verkehr auf https um.
Warum Browser einen sicheren Kontext verlangen
Mikrofon und Kamera sind sensibel. Browser stellen sie nur in einem sicheren Kontext bereit, damit ein Angreifer in einem geteilten Netzwerk die Seite nicht austauschen und Sie ausspähen kann. Einfache http-Seiten, lokale Netzwerkadressen wie 192.168.x.x und viele In-App-Ansichten erfüllen das nicht, localhost dagegen schon.
Eine Berechtigungsrichtlinie kann das Gerät auch für eine Seite in einem Frame blockieren. Die einbindende Seite muss Mikrofon und Kamera für den Frame zulassen.
Checkliste für Entwickler
Liefern Sie über HTTPS mit gültigem Zertifikat aus, testen Sie lokale Arbeit auf localhost und prüfen Sie window.isSecureContext, bevor Sie getUserMedia aufrufen. Setzen Sie bei Einbettungen allow="microphone; camera" am iframe und vermeiden Sie Sandboxes, die die Berechtigung entfernen. Der Mikrofontest wird über HTTPS ausgeliefert, damit Sie vergleichen können.
FAQ
Häufige Fragen
Warum ist navigator.mediaDevices undefined?
Die Seite liegt nicht in einem sicheren Kontext, daher blendet der Browser die Medien-API aus. Öffnen Sie sie über HTTPS oder auf localhost.
Zählt localhost als sicher?
Ja. Browser behandeln localhost als sicher, Sie können also ohne Zertifikat entwickeln. Andere lokale Adressen brauchen HTTPS.
Was ist ein SecurityError bei getUserMedia?
Der Browser hat abgelehnt, weil die Seite unsicher ist, in einem eingeschränkten Frame geladen wurde oder eine Richtlinie das Gerät verbietet.
Sind meine Daten auf einer http-Seite sicher?
Nutzen Sie Mikrofon und Kamera nicht auf http-Seiten. Verwenden Sie https, damit die Seite unterwegs nicht verändert werden kann.