Access-Control-Allow-Origin

HLS CORS 錯誤:為什麼 M3U8 流在瀏覽器中失敗

當不允許瀏覽器從其他來源取得 M3U8 清單、加密金鑰或媒體片段時,會發生 HLS CORS 錯誤。該串流仍可依照 VLC 播放,因為 CORS 是瀏覽器規則,而不是媒體規則。若要線上測試流,請使用啟用 CORS 的來源或透過代理路由 HLS 請求。

最後更新: June 20, 2026

播放、歷史記錄、收藏夾、字幕和瀏覽器轉換均保留在此裝置上。只有當您開啟 CORS 代理程式時,HLS 請求才會通過代理。

智能CORS代理

當直接瀏覽器播放被封鎖時,對清單、金鑰和段使用 Cloudflare Worker 代理程式。

影片預覽

連結健康報告

解析變體、位元率、片段持續時間、加密和即時/VOD狀態,然後對媒體片段進行死連結採樣。分段檢查受到瀏覽器CORS的限制,因此啟用代理程式以獲得最準確的結果。

如何識別CORS故障

查看症狀意義
清單被阻止.m3u8 請求在播放開始前失敗。來源需要Access-Control-Allow-Origin或玩家需要代理。
鑰匙被鎖清單已加載,但加密播放失敗。AES-128 密鑰 URL 也必須允許 CORS 或透過同一代理進行路由。
段被阻止播放開始,然後緩衝或停止。每個 .ts 或 .m4s 段請求都需要相同的 CORS 路徑。
VLC 有效,瀏覽器失敗桌面播放可以,但網頁播放不行。這通常可以確認瀏覽器CORS問題,而不是串流損壞。
預檢失敗自訂標頭會觸發來源拒絕的 OPTIONS 請求。避免不必要的標頭或配置代理/來源來處理選項。

如何修復或測試 HLS CORS 錯誤

  1. 1

    檢查清單是否載入

    打開M3U8URL或將其貼到播放器中。如果清單請求被CORS阻止,則播放甚至無法開始。

  2. 2

    與VLC比較

    如果VLC可以播放相同的URL但瀏覽器不能,則串流可能是可達的且故障在於瀏覽器存取控制。

  3. 3

    啟用智能CORS代理

    開啟代理,以便清單、加密金鑰和媒體片段都透過瀏覽器可以讀取的回應進行傳輸。

  4. 4

    運行健康報告

    透過代理程式使用驗證器來檢查段是否確實有效,而不是僅僅被 CORS 阻止。

  5. 5

    僅在需要時添加Referer

    如果源端使用熱連結保護,請將原始頁面URL設定為Referer。除非來源需要,否則不要新增自訂標頭。

為什麼 HLS 在多個 URL 上需要 CORS

HLS 播放器不会只获取一个文件。它取得主清單、一個或多個媒體播放清單、AES-128流的加密金鑰以及許多分段URL。這些資源中任何一個缺少 CORS 標頭都可能會中斷播放,因此僅測試第一個 .m3u8 回應是不夠的。

Access-Control-Allow-Origin 應該做什麼

對於公共串流,來源可以為託管播放器的網站發送Access-Control-Allow-Origin,或在不涉及憑證時使用通配符。對於私有串流,請保持來源鎖定並使用受控代理端點進行測試。避免在同一個 HLS 會話中混合直接和代理URL。

為什麼代理對於調試很有用

代理允許瀏覽器從您自己允許的來源請求HLS資產,同時代理獲取真實的清單、密鑰和分段URLs。這使得可以判斷流是否被破壞或只是被瀏覽器策略阻止。當來源需要時,它還為您提供了一個添加 Referer 或 User-Agent 的位置。

常見問題

是什麼導致了 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。