پیام طول بدن در HTTP/1.1
خب، بیایید درباره این موضوع کمی صحبت کنیم. HTTP (پروتکل انتقال ابرمتن) یکی از سازوکارهای اصلی وب است و اطلاعات را بین سرور و کلاینت منتقل میکند. یکی از نکات مهم در این پروتکل، طول بدن پیام است. این بخش در RFC 9112 به طور مفصل توضیح داده شده و بیان میکند که چطور باید این طول مشخص شود. برای ما به عنوان توسعهدهنده، گاهی اوقات نیاز داریم بدانیم که دادههایی که ارسال یا دریافت میکنیم چقدر بزرگ هستند.
در HTTP/1.1، طول بدن پیام میتواند به دو روش مختلف مشخص شود. روش اول استفاده از هدر Content-Length
است که مشخص میکند بدنه پیام به چه اندازه است. با استفاده از این هدر، سرور میتواند به کلاینت بگوید که چه مقدار داده انتظار میرود و کلاینت نیز میتواند بر اساس آن اقدام کند.
روش دوم استفاده از Transfer-Encoding
است، جایی که دادهها در تکههای کوچک ارسال میشوند و اندازه کل پیام به طور دقیق مشخص نیست. این روش معمولاً برای ارسال محتوای بزرگ یا در حال انجام مورد استفاده قرار میگیرد. مطلبی که باید به آن توجه کرد این است که هر کدام از این روشها مزایا و معایب خود را دارند و باید با توجه به نیاز پروژه انتخاب شوند.
درواقع ما باید بدانیم که انتخاب یکی از این دو روش چگونه میتواند بر روی عملکرد و کارایی اپلیکیشن ما تاثیر بگذارد. برای مثال، در شرایطی که دادهها به سرعت تولید میشوند، استفاده از تکهتکه کردن میتواند مفیدتر باشد. از سوی دیگر، زمانی که به شکل واضحی میدانیم طول دادهها چقدر است، استفاده از Content-Length
ممکن است بهترین انتخاب باشد.
نمونه کد
GET /example HTTP/1.1
Host: www.example.com
Content-Length: 123
این یک پیام تستی است.
توضیحات درباره کد
خط اول:
GET /example HTTP/1.1
نمایانگر یک درخواست HTTP از نوع GET است که به آدرس /example
ارسال میشود.خط دوم:
Host: www.example.com
نشان میدهد که درخواست به کدام هاست ارسال میشود.خط سوم:
Content-Length: 123
طول بدن پیام را که 123 بایت است مشخص میکند.خط چهارم:
رایانه
نشاندهنده جداکننده بین هدرها و بدنه پیام است.خط پنجم:
این یک پیام تستی است.
بدنه پیام است که به سرور ارسال میشود.