Panduan perbaikan · Tes mikrofon
Cara memperbaiki "SecurityError" dan "navigator.mediaDevices is undefined"
Browser hanya mengizinkan akses mikrofon dan kamera di halaman aman. Jika alamat diawali http:// bukan https://, atau halaman berada di frame tanpa izin, browser melempar SecurityError atau menyembunyikan navigator.mediaDevices sepenuhnya, yang menghasilkan "TypeError: Cannot read properties of undefined (reading getUserMedia)". Solusinya adalah memakai alamat aman.
Daftar periksa perbaikan cepat
- 1Periksa bilah alamat. Halaman harus diawali https:// atau berupa localhost.
- 2Ubah http:// menjadi https:// pada alamat, atau buka kembali situs dari tautan aman.
- 3Jika Anda berada di dalam aplikasi atau tampilan tertanam, buka halaman di tab browser biasa.
- 4Izinkan mikrofon dan kamera untuk situs, muat ulang, lalu tekan Periksa lagi.
- 5Jika Anda mengelola situsnya, pasang sertifikat dan alihkan semua lalu lintas http ke https.
Mengapa browser mewajibkan konteks aman
Mikrofon dan kamera bersifat sensitif. Browser hanya menampilkannya dalam konteks aman agar penyerang di jaringan bersama tidak bisa menukar halaman dan memata-matai Anda. Halaman http biasa, alamat jaringan lokal seperti 192.168.x.x, dan banyak tampilan dalam aplikasi tidak memenuhi syarat, meskipun localhost memenuhi.
Kebijakan izin juga dapat memblokir perangkat untuk halaman di dalam frame. Halaman yang menampung harus mengizinkan mikrofon dan kamera untuk frame itu.
Daftar periksa developer
Sajikan lewat HTTPS dengan sertifikat valid, uji pekerjaan lokal di localhost, dan periksa window.isSecureContext sebelum memanggil getUserMedia. Untuk penyematan, setel allow="microphone; camera" pada iframe dan hindari sandbox yang menghapus izin. Tes mikrofon disajikan lewat HTTPS agar Anda bisa membandingkan.
FAQ
Pertanyaan umum
Mengapa navigator.mediaDevices undefined?
Halaman tidak berada dalam konteks aman, jadi browser menyembunyikan API media. Buka lewat HTTPS atau di localhost.
Apakah localhost dianggap aman?
Ya. Browser memperlakukan localhost sebagai aman, jadi Anda bisa mengembangkan tanpa sertifikat. Alamat lokal lain butuh HTTPS.
Apa itu SecurityError di getUserMedia?
Browser menolak karena halaman tidak aman, dimuat di frame terbatas, atau kebijakan melarang perangkat.
Apakah data saya aman di halaman http?
Hindari memakai mikrofon dan kamera di halaman http. Gunakan https agar halaman tidak bisa diubah saat transit.