CORS 실패를 인식하는 방법
| 확인하다 | 징후 | 의미 |
|---|---|---|
| 매니페스트가 차단됨 | 재생이 시작되기 전에 .m3u8 요청이 실패합니다. | 원본에는 Access-Control-Allow-Origin이 필요하거나 플레이어에게 프록시가 필요합니다. |
| 키가 차단되었습니다. | 매니페스트가 로드되지만 암호화된 재생이 실패합니다. | AES-128 키 URL도 CORS을 허용하거나 동일한 프록시를 통해 라우팅해야 합니다. |
| 차단된 세그먼트 | 재생이 시작된 다음 버퍼링되거나 정지됩니다. | 모든 .ts 또는 .m4s 세그먼트 요청에는 동일한 CORS 경로가 필요합니다. |
| VLC 작동, 브라우저 실패 | 데스크톱 재생은 작동하지만 웹 재생은 작동하지 않습니다. | 이는 일반적으로 끊어진 스트림이 아닌 브라우저 CORS 문제를 확인합니다. |
| 프리플라이트 실패 | 사용자 정의 헤더는 원본이 거부하는 OPTIONS 요청을 트리거합니다. | 불필요한 헤더를 피하거나 OPTIONS를 처리하도록 프록시/원본을 구성하세요. |
HLS CORS 오류를 수정하거나 테스트하는 방법
- 1
매니페스트가 로드되는지 확인
M3U8 URL를 열거나 플레이어에 붙여넣으세요. 매니페스트 요청이 CORS에 의해 차단되면 재생을 시작할 수도 없습니다.
- 2
VLC과 비교
VLC이 동일한 URL을 재생할 수 있지만 브라우저에서는 재생할 수 없는 경우 스트림에 도달할 수 있으며 오류는 브라우저 액세스 제어입니다.
- 3
스마트 CORS 프록시 활성화
매니페스트, 암호화 키, 미디어 세그먼트가 모두 브라우저가 읽을 수 있는 응답을 통해 이동하도록 프록시를 켜세요.
- 4
상태 보고서 실행
프록시를 통해 유효성 검사기를 사용하여 세그먼트가 CORS에 의해 차단되는 대신 실제로 살아 있는지 확인하세요.
- 5
필요한 경우에만 Referer을 추가하세요.
원본이 핫링크 보호를 사용하는 경우 원본 페이지 URL를 Referer으로 설정합니다. 원본에서 요구하지 않는 한 사용자 정의 헤더를 추가하지 마십시오.
HLS이 둘 이상의 URL에 대해 CORS을 필요로 하는 이유
HLS 플레이어는 하나의 파일만 가져오지 않습니다. 마스터 매니페스트, 하나 이상의 미디어 재생 목록, AES-128 스트림에 대한 암호화 키 및 많은 세그먼트 URL을 가져옵니다. 해당 리소스 중 하나에 누락된 CORS 헤더가 하나라도 있으면 재생이 중단될 수 있으므로 첫 번째 .m3u8 응답만 테스트하는 것만으로는 충분하지 않습니다.
Access-Control-Allow-Origin이 해야 할 일
공개 스트림의 경우 원본은 플레이어를 호스팅하는 사이트에 대해 Access-Control-Allow-Origin을 보내거나 자격 증명이 관련되지 않은 경우 와일드카드를 사용할 수 있습니다. 비공개 스트림의 경우 원본을 잠긴 상태로 유지하고 테스트를 위해 제어된 프록시 엔드포인트를 사용하세요. 동일한 HLS 세션에서 직접 및 프록시 URL를 혼합하지 마십시오.
디버깅에 프록시가 유용한 이유
프록시를 사용하면 브라우저가 허용된 원본에서 HLS 자산을 요청할 수 있으며 프록시는 실제 매니페스트, 키 및 세그먼트 URL을 가져옵니다. 이를 통해 스트림이 끊어졌는지 아니면 단순히 브라우저 정책에 의해 차단되었는지 알 수 있습니다. 또한 원본에서 요구할 때 Referer 또는 User-Agent을 추가할 수 있는 한 곳도 제공합니다.
관련 스트림 디버깅 도구
- M3U8 링크 문제 해결 CORS, Referer, 데드 세그먼트, 코덱 제한 및 DRM을 다룹니다.
- 커스텀 Referer M3U8 플레이어 전달된 헤더가 필요한 핫링크 보호 스트림에 대해 설명합니다.
자주 묻는 질문
HLS CORS 오류의 원인은 무엇입니까?
원본이 원본 간 액세스를 허용하지 않았기 때문에 브라우저가 M3U8 매니페스트, 암호화 키 또는 미디어 세그먼트를 읽을 수 없는 경우 HLS CORS 오류가 발생합니다. VLC는 브라우저에서 CORS를 시행하므로 계속해서 스트림을 재생할 수 있습니다.
내 M3U8 스트림이 VLC에서는 재생되지만 Chrome에서는 재생되지 않는 이유는 무엇입니까?
VLC은 브라우저 CORS 검사에 의해 제한되지 않습니다. VLC가 작동하고 Chrome이 실패하는 경우 일반적으로 스트림에 연결할 수 있지만 브라우저는 CORS 헤더나 프록시 없이는 하나 이상의 HLS 요청을 읽을 수 없습니다.
CORS 프록시로 M3U8 재생을 수정할 수 있나요?
예, 테스트 및 디버깅용입니다. 프록시는 모든 HLS 요청이 브라우저가 읽을 수 있는 원본에서 나오도록 매니페스트, 미디어 재생 목록, 키 및 세그먼트를 라우팅해야 합니다.
HLS 세그먼트에 CORS 헤더가 필요합니까?
예. 매니페스트, 하위 재생 목록, 키 및 모든 미디어 세그먼트는 브라우저에서 읽을 수 있어야 합니다. 최상위 .m3u8 파일에 올바른 CORS 헤더가 있어도 스트림이 실패할 수 있습니다.
이것이 핫링크 보호와 동일합니까?
아니요. CORS은 브라우저 액세스 규칙입니다. 핫링크 보호는 특정 Referer 또는 User-Agent을 요구할 수 있는 원본 규칙입니다. 일부 스트림에는 두 가지 문제가 모두 있으므로 프록시와 일치하는 Referer가 필요할 수 있습니다.