Почему ошибка CORS у M3U8 блокирует воспроизведение и конвертацию в браузере
Страница в браузере может прочитать плейлист, только если медиасервер авторизует её источник. Плейлист, дочерние плейлисты, ключи шифрования, карты инициализации и каждый медиасегмент требуют успешного межсайтового ответа.
Открытие ссылки в новой вкладке доказывает, что сервер может отдать байты, но не то, что JavaScript с другого источника может их прочитать. VLC, FFmpeg и нативные приложения не применяют браузерную политику одного источника таким же образом.
Как владельцам потоков исправить CORS-заголовки ответа для M3U8
Настройте CDN или объектное хранилище так, чтобы возвращался Access-Control-Allow-Origin для источника веб-приложения, были разрешены запросы GET и HEAD, открывались Content-Length и Content-Range при использовании range-запросов, а запросы OPTIONS проходили, когда пользовательские заголовки вызывают предзапрос.
Проверяйте не только итоговый ответ сегмента, но и перенаправления. Правильно настроенный мастер-плейлист всё равно может не работать, если сервер дочернего плейлиста или сегментов не отдаёт CORS-заголовки.
- Проверьте мастер-плейлист и один медиасегмент
- Изучите ответы перенаправлений
- Проверьте range-запросы при использовании EXT-X-BYTERANGE
Почему этот инструмент M3U8 не предлагает публичный прокси для обхода CORS
Универсальный прокси может раскрыть приватные ссылки, поглощать значительную полосу и превратить инструмент отладки в ретранслятор чужих медиа. Поэтому M3U8toMP4.org сохраняет прямой путь данных между вашим браузером и источником.
Если источник ваш, исправьте его серверную конфигурацию. Для приватных внутренних систем разверните управляемый ретранслятор с единого источника с аутентификацией, белыми списками ссылок, лимитами запросов и журналированием вместо открытого прокси.