ملف محفوظ ليس بعد تنزيلًا موثَّقًا
تحقّق من أن التنزيل عبر الوكيل يحتوي على الملف المتوقع، لا صفحة مصادقة أو استجابة ناقصة، قبل نشره أو استخدامه.
ملف report.xlsx افتراضي حجمه 8 KB ويُفتح كصفحة تسجيل دخول. حفظ البرنامج ملفًا بنجاح، لكنه لم يحصل قط على جدول البيانات المقصود. يُختار اسم الملف محليًا؛ وهو ليس دليلًا على ما وصل.
اجعل القبول خطوة منفصلة قبل نشر التنزيل المؤقت:
- اشترط نجاح النقل وحالة الاستجابة المتوقعة. احتفظ بالخطأ بدلًا من اعتبار البايتات المكتوبة قبله مكتملة.
- قارن المحتوى بنوع الملف المتوقع. قد تُعيد صفحة تسجيل الدخول أو التصفية الرمز 200. وقد يكون Content-Type خاطئًا، ووجود بادئة HTML في جدول بيانات تحذير يستلزم التحقيق. أما الملف الذي يبدأ بـسطر حالة HTTP فيشير إلى تأطير الاستجابة الخام بدلًا من ذلك.
- تحقّق من كامل البايتات المحفوظة مقابل مجموع تحقّق أو توقيع موثوق عند توفره. لا ينبغي للتطبيق أن ينشر الملف النهائي أو يستخدمه إلا بعد نجاح الفحوص المطلوبة.
حساب بصمة (hash) دون قيمة متوقعة لا يحدد سوى البايتات التي استلمتها. ومجموع التحقّق غير الموقَّع الذي يُجلب عبر المسار غير الموثوق نفسه قد يشارك الملف ضعفه؛ استخدم توقعًا مستقلًا موثوقًا.
توخَّ الحذر أيضًا في مقارنات الحجم. قد يفكّ عميل HTTP ترميز المحتوى أثناء القراءة، لذا قد يختلف طول الملف الناتج اختلافًا مشروعًا عن ترويسة تصف الرسالة المرمّزة. قارن توقع الناشر للملف بالتمثيل المحفوظ فعليًا.
إذا فشلت المحاولة، فأبقِ المخرجات المؤقتة لاستئناف مقصود فقط أو تخلّص منها. فترك بايتات ناقصة في المسار النهائي يُجبر البرنامج التالي على تخمين ما إذا كانت صالحة للاستخدام.