الخلاصة

  • يجعل draft-ietf-httpbis-resumable-upload-12 قيمة Upload-Offset إقراراً على مستوى التطبيق بالبادئة التي عالجها مورد الرفع المؤقت وضماناً لعدم الحاجة إلى إرسالها مرة أخرى.
  • لا يثبت هذا الإقرار أن التفويض ما زال قائماً عند الإنهاء، ولا أن المحتوى سليم أو مكتمل أو مقبول لدى المورد الأصلي؛ ويجب إعادة فحص الامتياز والحصة قبل الالتزام النهائي.

بدأ المستخدم رفع حزمة كبيرة وهو مخول بذلك. انقطع الاتصال، وبقي مورد الرفع المؤقت محتفظاً بما عالجه. خلال الساعات التالية انتهى عقد المستخدم وسُحب دوره، لكن رابط الاستئناف ظل قابلاً للوصول. عادت الأداة، أرسلت الجزء الأخير، ثم تعامل نظام آخر مع استمرار الرابط كأنه استمرار للتفويض.

الدليل التقني كان صادقاً: البايتات السابقة لا تحتاج إلى إعادة. الحكم المؤسسي كان قديماً: السماح بالبدء لم يعد إذناً بالإتمام.

نُشرت المراجعة 12 من Resumable Uploads for HTTP في 6 يوليو 2026. وهي Internet-Draft نشطة لمجموعة عمل HTTP، مقصودة لمسار Standards Track وتنتهي في 7 يناير 2027. ليست RFC ولا تقرير نشر أو اختبار توافق أو دليلاً على التبني. لكنها تضع فاصلًا مهماً بين دوام حالة النقل ودوام السلطة.

المورد المؤقت لا يرث قرار الهدف

يتجه الطلب الأصلي إلى مورد يفهم معنى العملية: إنشاء عنصر، استبدال مادة، تقديم ملف أو بدء معالجة. ولتسهيل الاستئناف ينشئ الخادم مورداً آخر مؤقتاً، خاصاً بتمثيل واحد. يستطيع العميل سؤال هذا المورد عن التقدم وإلحاق البيانات به أو إلغاؤه.

المورد المؤقت دفتر استمرارية. أما المورد المستهدف فهو الذي يطبق دلالة الطريقة والحقول ويقرر القبول أو الرفض. وجود URI مؤقت لا يثبت أن العنصر النهائي موجود. والقدرة على إلحاق بايتات لا تمنح بالضرورة حق نشرها أو تنفيذها أو استبدال أصل قائم.

يمكن للخادم حذف المورد فور الإكمال أو الاحتفاظ به فترة كي يتحقق عميل فقد الاستجابة الأخيرة. لذلك لا يكفي اختفاء الرابط لاحقاً لإثبات النجاح أو الفشل. لا بد من معرفة سياسة الاحتفاظ وقراءة سجل المورد المستهدف.

الإزاحة وصل معالجة لا وصل نقل

تقيس Upload-Offset عدد بايتات التمثيل التي عالجها تطبيق مورد الرفع. وقد تكون طبقة النقل قد سلّمت وأكدت بايتات أكثر بقيت في مخزن مؤقت ولم تدخل حالة التطبيق بعد.

حين يعيد الخادم الإزاحة فهو يقدم وعداً ضيقاً وقوياً: هذه البادئة عولجت ولن يطلب إرسالها من جديد. يستطيع العميل تحرير الذاكرة أو حذف الأجزاء المحلية المحفوظة حصراً للإعادة. وهذه هي الفائدة الاقتصادية المباشرة للآلية.

لكن الوصل لا يقول إن البايتات دخلت التخزين النهائي أو اجتازت الفحص أو طابقت digest أو نُسخت أو نُشرت. ولا يقرر أن العملية الأصلية نجحت. الصياغة الصحيحة هي: «عالج هذا المورد المؤقت هذه البادئة».

يجب ألا تنخفض الإزاحة. وإذا فقد الخادم جزءاً من الحالة فعليه تعطيل المورد ورفض التفاعل اللاحق. تخمين نقطة استئناف يحافظ على مظهر الاستمرارية لكنه قد يحذف أو يكرر أجزاء من التمثيل.

تساوي الطول لا يغلق الباب

يصف الطول الحجم الكامل حين يصبح معلوماً، بينما تصف الإزاحة البادئة المعالجة. وقد يتساويان ويبقى الرفع غير مكتمل. لا يسمح التصميم باستبدال إعلان النهاية بمعادلة عددية.

قد يتوقف مصدر متدفق مؤقتاً دون أن يغلق. وقد يرسل العميل كل المحتوى في طلبات سابقة ثم يستخدم PATCH فارغاً لإعلان الإتمام. تحمل Upload-Complete هذا الانتقال كحالة مستقلة.

في استجابة الإنشاء أو الإلحاق، تعني القيمة الصحيحة أن دلالة المورد الأصلي أصبحت مطبقة. ويمكن لذلك المورد أن يرسل استجابة مبكرة، فتكون العلامة صحيحة من دون نقل كامل التمثيل. ومن ثم فالإكمال قرار بروتوكولي، لا مرادفاً بسيطاً لوصول كل البايتات.

104 يثبت طريق العودة فقط

الرمز 104 Upload Resumption Supported استجابة مؤقتة. يستطيع الخادم بها إعلان URI المؤقت وحدوده، ثم تحديث الإزاحة أثناء المعالجة. إذا انقطع الاتصال بعد استلامها صار لدى العميل موضع يرجع إليه.

ليست هذه الاستجابة الحكم النهائي للهدف. في الإنشاء المتفائل يبدأ العميل إرسال التمثيل كاملاً ويتوقع وصول 104 مبكراً. إذا وقع الانقطاع قبلها، أو حذفها وسيط، فقد يحتفظ الخادم ببيانات لا يملك العميل عنواناً لاستئنافها.

أما الإنشاء الحذر فيطلب أولاً مورداً فارغاً، ويتلقى URI والحدود، ثم يبدأ النقل. يكلف رحلة إضافية ويشتري إحداثية عودة مؤكدة. لا تحول أي من الاستراتيجيتين دعم الاستئناف إلى قبول للعنصر.

التعارض يوقف دمج ذاكرتين

يحمل كل إلحاق الإزاحة التي يعتقدها العميل. إذا خالفت حالة الخادم، تأتي 409 Conflict مع إزاحة الخادم وحالة الإكمال. يمنع ذلك محاولة متأخرة أو استجابة ضائعة من إدخال الجزء نفسه مرتين.

ينبغي للعميل قراءة الحالة من جديد والتأكد من هوية التمثيل المصدر وتطبيق قاعدة مصالحة معلنة. إعادة الجزء من الإزاحة المحلية بلا فحص قد تكرر بايتات عالجها الخادم. واتباع إزاحة بعيدة تخص مصدراً آخر قد يصل تمثيلين مختلفين.

لا يدعم البروتوكول نقلاً متوازياً للمورد نفسه، ويجب تسلسل الإلحاق والإلغاء. ومع ذلك لا يعيد هذا التسلسل استجابة نهائية فقدها العميل؛ تبقى الحاجة إلى الاستعلام وتصميم العملية الأصلية بصورة آمنة للتكرار.

السلامة ترى التمثيل المجموع

الإزاحة الصحيحة لا تثبت digest. لحقول السلامة قواعد مستقلة تحدد البايتات المشمولة ووقت المقارنة وما الذي يبطل عند الفشل. يجب أن يسجل النظام أن الفحص طُلب ونُفذ ونجح، لا أن يستنتجه من التقدم.

كما يمكن للتجزئة أن تعمي ماسحاً يفترض وصول المحتوى كاملاً في رسالة واحدة. نمط ضار موزع بين طلبين قد يبدو سليماً في كل جزء ويظهر بعد الجمع. يجب فحص التمثيل المركب قبل التنفيذ أو النشر أو تسليمه إلى محلل حساس.

وتظل البيانات الوصفية مدخلاً غير موثوق. لا يجعل عد البايتات الصحيح اسم الملف أو نوعه أو موضع التخزين آمناً. الاستمرارية وسلامة المحتوى بوابتان منفصلتان.

صعوبة تخمين URI ليست ولاية

URI الخاص بالرفع يحدد الحالة التي يمكن تعديلها. ينبغي جعله صعب التخمين وقصر الوصول عليه على العملاء المخولين، ومنع تسريب معلومات داخلية إذا حمل تلميحات توجيه أو تخزين.

لكن سرية الرابط دفاع مساعد وليست تفويضاً دائماً. قد يتسرب الرابط إلى سجل، أو يتغير دور المستخدم، أو تمتلئ الحصة، أو تنتهي موافقة قانونية قبل الإكمال. يبرز المشروع خطر الفاصل بين وقت الفحص ووقت الاستخدام، ويوصي بإعادة التحقق من الامتيازات والحصص قبل الإنهاء.

تتكون سلسلة الدليل من درجات مستقلة: تسليم النقل؛ معالجة البادئة؛ مصالحة الإزاحة والطول؛ الإكمال الصريح؛ السلامة وسياسة المحتوى؛ التفويض الحالي؛ التزام المورد المستهدف؛ الأثر اللاحق. بقاء الرابط لا يقفز فوق أي درجة.

المصادر والحدود

تضم الحزمة المجمدة المراجعة 12 وتاريخ Datatracker وسطح عمل HTTP، ووثائق HTTP الدلالية والتخزين المؤقت وHTTP/1.1 وHTTP/2 وQUIC وDigest Fields وPATCH وProblem Details وContent-Disposition. تثبت الآلية وحدودها، لا الانتشار أو الأداء أو حادثاً حقيقياً أو توافقاً عملياً أو سلوك شركة بعينها.

المصادر