آشنایی با وضعیت HTTP 100 Continue

understanding http 100 continue status
20 آبان 1403

وقتی با پروتکل HTTP کار می‌کنیم، ممکنه با کدهای وضعیت مختلفی روبرو بشیم. یکی از این کدها "100 Continue" هست. این کد وضعیت، در اصل برای بهینه‌کردن ارسال درخواست‌ها خصوصاً در HTTP/1.1 طراحی شده. مثلاً، وقتی یه مرورگر یا کلاینت می‌خواد داده‌های بزرگی رو آپلود کنه، می‌تونه قبل از ارسال کلی داده‌ها یه هیولای درخواست اولیه بفرسته که فقط شامل هدرها باشه. اگه سرور پاسخ 100 Continue بده، یعنی همه‌چیز اوکیه و می‌تونه بدنه اصلی درخواست رو هم بفرسته.

به این ترتیب، سرور می‌تونه به کلاینت بگه که تا اینجای کار، مشکلی نیست و می‌تونه ادامه بده. این کار مخصوصاً زمانی کارآمده که درخواست با حجم بالاست و کلاینت می‌خواد مطمئن بشه که باگی یا مشکلی در هدرها وجود نداره که باعث ریجکت شدن کل درخواست بشه.

البته این فرآیند به صورت خودکار توسط کلاینت‌ها و سرورها مدیریت می‌شه و شما به ندرت نیاز دارید که خودتون به صورت دستی درگیرش بشید، مگر در شرایط خاص که دارید یه سیستم سفارشی طراحی می‌کنید.

نکته‌ای که باید توجه داشت اینه که این وضعیت بیشتر در پروتکل HTTP/1.1 استفاده می‌شه و ممکنه توی نسخه‌های بعدها تغییر بکنه یا حتی در بعضی موارد دیگه نیازی بهش نباشه. اما زمانی که دارید با کلاینت‌ها و سرورهای قدیمی کار می‌کنید، خیلی به‌کارتون میاد.

به عنوان یه برنامه‌نویس، خوبه که با این وضعیت آشنا باشید، اما نیازی نیست که زمان زیادی رو صرفش کنید مگر زمانی که دارید روی شبکه یا بخش‌های حساس سیستم کار می‌کنید.

در ادامه یه مثال از کاربرد کد وضعیت HTTP 100 Continue در ارتباطات HTTP میاریم:

POST /upload HTTP/1.1\r\nHost: www.example.com\r\nContent-Length: 348\r\nExpect: 100-continue\r\n\r\n[خط بعدی ارسال خواهد شد در صورتی که پاسخ 100 Continue دریافت شود]

توضیحات کد فوق:

POST /upload HTTP/1.1 – این خط مشخص می‌کند که کلاینت قصد ارسال اطلاعات با استفاده از متد POST به سرور در مسیر /upload را دارد.
Host: www.example.com – هدر Host نشون می‌ده که درخواست برای کدام دامنه باید ارسال بشه.
Content-Length: 348 – این مقدار نشون می‌ده که طول محتوای بدنه درخواست چقدره، در اینجا 348 بایته.
Expect: 100-continue – کلاینت به سرور میگه که انتظار داره قبل از ارسال بدنه اصلی، یه پاسخ 100 Continue دریافت کنه تا بتونه مطمئن بشه که ادامه برقراره.
[خط بعدی ارسال خواهد شد در صورتی که پاسخ 100 Continue دریافت شود] – این خط نشون‌دهنده متنی است که بعد از دریافت وضعیت 100 ارسال خواهد شد.

سوالات متداول

؟

وضعیت 100 Continue چه کاربردی داره؟

؟

آیا همیشه 100 Continue به کار میاد؟

؟

چطور متوجه بشم باید از 100 Continue استفاده کنم؟