Как распознать неисправность CORS
| Проверять | Симптом | Значение |
|---|---|---|
| Манифест заблокирован | Запрос .m3u8 завершается неудачей до начала воспроизведения. | Источнику нужен Access-Control-Allow-Origin или игроку нужен прокси. |
| Ключ заблокирован | Манифест загружается, но зашифрованное воспроизведение не выполняется. | Ключ AES-128 URL также должен разрешать CORS или маршрутизацию через тот же прокси-сервер. |
| Сегменты заблокированы | Воспроизведение начинается, затем буферизуется или останавливается. | Для каждого запроса сегмента .ts или .m4s требуется один и тот же путь CORS. |
| VLC работает, браузер не работает | Воспроизведение на рабочем столе работает, а воспроизведение через Интернет — нет. | Обычно это подтверждает проблему CORS браузера, а не прерванный поток. |
| Предполетная проверка не удалась | Пользовательские заголовки запускают запрос OPTIONS, который источник отклоняет. | Избегайте ненужных заголовков или настройте прокси/источник для обработки ОПЦИИ. |
Как исправить или проверить ошибку HLS CORS
- 1
Проверьте, загружается ли манифест
Откройте M3U8 URL или вставьте его в плеер. Если запрос манифеста заблокирован CORS, воспроизведение даже не может начаться.
- 2
Сравните с VLC
Если VLC может воспроизводить тот же URL, но браузер не может, поток, вероятно, доступен, и ошибка связана с контролем доступа браузера.
- 3
Включите умный прокси CORS
Включите прокси-сервер, чтобы манифесты, ключи шифрования и медиа-сегменты передавались через ответ, который мог прочитать браузер.
- 4
Запустите отчет о состоянии
Используйте валидатор через прокси-сервер, чтобы проверить, действительно ли сегменты активны, а не просто заблокированы CORS.
- 5
Добавляйте Referer только при необходимости.
Если источник использует защиту хотлинков, установите исходную страницу URL как Referer. Не добавляйте собственные заголовки, если этого не требует источник.
Почему HLS требует CORS более чем для одного URL
Проигрыватель HLS не извлекает только один файл. Он извлекает главный манифест, один или несколько списков воспроизведения мультимедиа, ключи шифрования для потоков AES-128 и множество сегментов URL. Один-единственный отсутствующий заголовок CORS на любом из этих ресурсов может привести к сбою воспроизведения, поэтому тестирования только первого ответа .m3u8 недостаточно.
Что должен делать Access-Control-Allow-Origin
Для общедоступных потоков источник может отправить Access-Control-Allow-Origin для сайта, на котором размещен проигрыватель, или использовать подстановочный знак, если учетные данные не задействованы. Для частных потоков держите источник заблокированным и используйте для тестирования контролируемую конечную точку прокси. Избегайте смешивания прямых и проксируемых URL в одном сеансе HLS.
Почему прокси полезен для отладки
Прокси позволяет браузеру запрашивать ресурсы HLS из вашего собственного разрешенного источника, в то время как прокси извлекает реальный манифест, ключ и сегмент URL. Это позволяет определить, поврежден ли поток или просто заблокирован политикой браузера. Это также дает вам одно место для добавления Referer или User-Agent, если их требует источник.
Инструменты отладки связанных потоков
- M3U8 устранение неполадок со ссылками охватывает CORS, Referer, мертвые сегменты, ограничения кодеков и DRM.
- Пользовательский проигрыватель Referer M3U8 объясняет потоки, защищенные горячими ссылками, которым необходимы пересылаемые заголовки.
Часто задаваемые вопросы
Что вызывает ошибку HLS CORS?
Ошибка HLS CORS возникает, когда браузер не может прочитать манифест M3U8, ключ шифрования или медиа-сегменты, поскольку источник не разрешает доступ между источниками. VLC по-прежнему может воспроизводить поток, поскольку CORS применяется браузерами.
Почему мой поток M3U8 воспроизводится в VLC, но не в Chrome?
VLC не ограничен проверками браузера CORS. Если VLC работает, а Chrome дает сбой, поток обычно доступен, но браузер не может прочитать один или несколько запросов HLS без заголовков CORS или прокси-сервера.
Может ли прокси-сервер CORS исправить воспроизведение M3U8?
Да, для тестирования и отладки. Прокси-сервер должен маршрутизировать манифест, списки воспроизведения мультимедиа, ключи и сегменты так, чтобы каждый запрос HLS исходил из источника, который браузеру разрешено читать.
Нужны ли сегментам HLS заголовки CORS?
Да. Манифест, дочерние списки воспроизведения, ключи и каждый медиа-сегмент должны быть доступны для чтения браузером. Поток может завершиться неудачно, даже если файл .m3u8 верхнего уровня имеет правильные заголовки CORS.
Это то же самое, что защита от хотлинков?
Нет. CORS — это правило доступа браузера. Защита хотлинков — это правило происхождения, для которого могут потребоваться определенные Referer или User-Agent. Некоторые потоки имеют обе проблемы, поэтому вам может понадобиться прокси-сервер и соответствующий Referer.