اتصال باز می‌شود. سرآیندهای درخواست بیرون می‌روند. به نظر می‌رسد فایل حرکت نمی‌کند. یک توضیح این است که کارخواه پیش از فرستادن بدنه‌اش منتظر پاسخ به Expect: 100-continue است.

این سازوکار به گیرنده اجازه می‌دهد درخواست را بر پایه سرآیندهایش رد کند، پیش از آنکه بارگذاری بزرگ احتمالی فرستاده شود. توالی موفق معمول چنین است:

request headers → 100 Continue → request body → final response

کد 100 اطلاعاتی است: به کارخواه اجازه ادامه می‌دهد، اما به معنای ذخیره شدن فایل یا موفقیت عملیات برنامه نیست. یک Git push که HTTP 417 برمی‌گرداند، یک مورد مشخص از شکست انتظار است.

مشخص کنید کارخواه کدام پاسخ را دریافت کرده است

مشاهدهمعنایی که باید بررسی شود
100 Continueکارخواه می‌تواند با بدنه ادامه دهد
رد نهایی پیش از بدنهعملیات در مرحله سرآیند رد شد
هیچ پاسخ میانی مورد انتظاری نیستسیاست انتظار کارخواه و نحوه برخورد در آن مسیر

curl تنظیم اختصاصی انتظار برای expect-continue ارائه می‌دهد. اگر آن انتظار libcurl بدون پاسخ مورد انتظار منقضی شود، بدنه را به هر حال می‌فرستد؛ انقضا به‌طور خودکار به معنای شکست کل انتقال نیست. این تنظیم از زمانی که برای انتقال کامل مجاز است جداست. افزایش دومی می‌تواند همان وقفه آغازین را بی‌توضیح بگذارد.

همچنین مشخص کنید کدام گفت‌وگوی HTTP حامل Expect است. در CONNECT معمول به مقصد HTTPS، تبادل بارگذاری وب‌گاه درون TLS است؛ پیشکار رو به جلو به‌سادگی سرآیند انتظار درونی آن را بازرسی نمی‌کند. مسیر رهگیری یا ارسال متن آشکار متفاوت است.

حذف انتظار می‌تواند انتخابی آگاهانه برای سازگاری باشد، اما یعنی کارخواه ممکن است پیش از آگاهی از رد زودهنگام، فرستادن بدنه بزرگ را آغاز کند. آن رفتار را با نیاز واقعی مقایسه کنید. یک راه‌حل تاریخی برای پیشکار قدیمی را به عنوان دستور عمومی حذف این سرآیند از هر بارگذاری توصیف نکنید.

مقالات مرتبط