كيفية التعرف على فشل 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 للموقع الذي يستضيف المشغل، أو استخدام حرف البدل عندما لا تكون بيانات الاعتماد متضمنة. بالنسبة للتدفقات الخاصة، أبقِ المصدر مغلقًا واستخدم نقطة نهاية وكيل خاضعة للتحكم للاختبار. تجنب خلط URLs المباشر والوكيل في نفس جلسة HLS.
لماذا يعد الوكيل مفيدًا لتصحيح الأخطاء
يتيح الوكيل للمتصفح طلب أصول HLS من الأصل المسموح به الخاص بك بينما يقوم الوكيل بجلب البيان الحقيقي والمفتاح والجزء URLs. وهذا يجعل من الممكن معرفة ما إذا كان الدفق معطلاً أو محظورًا فقط بواسطة سياسة المتصفح. كما يمنحك مكانًا واحدًا لإضافة Referer أو User-Agent عندما يتطلب الأصل ذلك.
أدوات تصحيح الدفق ذات الصلة
- M3U8 استكشاف أخطاء الارتباط وإصلاحها يغطي CORS وReferer والأجزاء الميتة وحدود برنامج الترميز وإدارة الحقوق الرقمية.
- مشغل 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 هي قاعدة الوصول إلى المتصفح. حماية Hotlink هي قاعدة أصل قد تتطلب Referer أو User-Agent محددة. تحتوي بعض التدفقات على كلتا المشكلتين، لذا قد تحتاج إلى وكيل بالإضافة إلى Referer المطابق.