HTTP چیست؟
اینترنت شامل منابع زیادی است که بر روی سرورهای مختلف قرار دارند. برای دسترسی به محتوای اینترنت، مرورگر باید از این سرورها درخواست منابع مورد نیاز خود را داشته باشد. این پروتکل درخواستها و پاسخها، به شما امکان میدهد این صفحه را در مرورگر خود مشاهده کنید.
انتقال منابع از طریق پروتکل کنترل انتقال یا TCP انجام میشود. TCP برای مدیریت انواع اتصالات اینترنتی استفاده میشود، جایی که یک دستگاه میخواهد چیزی را به دستگاه دیگری ارسال کند. HTTP (پروتکل انتقال ابرمتن) زبان فرمانی است که دستگاهها در هر دو طرف اتصال باید از آن پیروی کنند تا بتوانند با یکدیگر ارتباط برقرار کنند.
درخواست HTTP چیست؟
درخواست HTTP از سمت یک کاربر به سرور ارسال میشود تا منبعی که برای ساخت محتوا نیاز است، دریافت شود. کاربران هنگام درخواست از یک URL (نشانی یکتای منبع) استفاده میکنند که اطلاعات لازم برای دسترسی به منابع سرور را در خود دارد.
ساختار درخواست HTTP
یک درخواست HTTP شامل سه بخش است: خط درخواست، هدرها و بدنه پیام.
خط درخواست
خط درخواست یا خط آغازین توسط کاربر ارسال میشود تا عملیات در سرور شروع شود. این خط شامل موارد زیر است:
- یک متد HTTP
- هدف درخواست که میتواند یک URI یا URL باشد که به یک مسیر یا پروتکل اشاره دارد. URI یک شناسه برای صفحه خاص است، در حالی که URL نوع خاصی از شناسه است که اطلاعاتی در مورد چگونگی دسترسی به منبع نیز در خود دارد.
- نسخه HTTP که ساختار پیام را تعریف میکند.
هدرها
هدرهای HTTP اطلاعات اضافی مانند کوکیها، توکنهای تأیید هویت یا اطلاعات مرورگر کاربر و نسخه سیستمعامل را بین سرور و کاربر منتقل میکنند. هدرهای HTTP به ساختار پایهای مشابه درخواست HTTP حساس به حروف بزرگ و کوچک هستند و با دو نقطه (:) و یک مقدار دنبال میشوند.
بدنه پیام
سرور از بدنه پیام برای ارسال اطلاعات به کلاینت استفاده میکند. بدنه پیام شامل اطلاعات، خط درخواست، هدرها، یک خط خالی و بدنه پیام اختیاری است. اگرچه همه درخواستها دارای بدنه نیستند، اما آنهایی که بدنه دارند اغلب از متد POST برای ارسال داده استفاده میکنند.
نحوه کار درخواستهای HTTP
درخواستهای HTTP اصلیترین روش ارتباطی بین کاربر و سرور هستند. وقتی کاربر درخواستی ارسال میکند، سرور آن را اعتبارسنجی کرده و بر اساس متد درخواست پاسخ HTTP ارسال میکند که مشابه درخواست شامل خط وضعیت، هدر و بدنه پیام است.
یک پاسخ ساده ممکن است به این صورت باشد: HTTP/1.1 200 OK
متدهای درخواست HTTP
متدهای درخواست HTTP روشی برای نشان دادن عملی است که باید بر روی یک منبع انجام شود. هرچند برخی از آنها اسم هستند، متدهای HTTP به عنوان افعال شناخته میشوند. آنها حساس به حروف بزرگ و کوچک هستند و همیشه با حروف بزرگ نوشته میشوند. انواع مختلفی از متدهای درخواست HTTP وجود دارد که هر کدام هدف خاصی دارند:
GET
پرکاربردترین متد HTTP، متد GET برای دریافت داده از یک سرور خاص استفاده میشود.
HEAD
مشابه متد GET، اما در اینجا بدنه پیام وجود ندارد. معمولاً درخواست HEAD برای بررسی دسترسی یک نقطه پایانی API استفاده میشود.
POST
POST یکی دیگر از متدهای پرکاربرد HTTP است. زمانی که میخواهید اطلاعاتی را برای ایجاد یا بهروزرسانی یک منبع به سرور ارسال کنید، از POST استفاده میکنید.
PUT
مشابه عملکرد متد POST، متد PUT برای بهروزرسانی یا ایجاد یک منبع استفاده میشود. با این حال، تفاوت این است که درخواستهای PUT ایدمپوتنت هستند، به این معنا که نتیجه همیشه ثابت خواهد بود، حتی اگر درخواست چندین بار ارسال شود.
DELETE
متد DELETE به شما امکان میدهد یک منبع خاص را از سرور حذف کنید.
PATCH
مشابه درخواستهای PUT و POST این متد نیز اطلاعات سرور را بهروزرسانی میکند. اما برخلاف آنها، PATCH فقط یک تغییر جزئی را اعمال میکند. زمانی که تنها عنوان یک محصول را تغییر میدهید، باید از PATCH استفاده کنید.
TRACE
درخواست TRACE یک آزمون بازگشتی در طول مسیر منبع هدف اجرا میکند. معمولاً برای اجرای آزمایشهای دیباگ و تشخیصی بر روی APIها استفاده میشود.
CONNECT
متد CONNECT کمتر شناختهشده است و برای ایجاد یک اتصال به سرور از طریق HTTP استفاده میشود. این متد یک تونل اتصال به سرور ایجاد میکند که با پارامتر URL مشخص شده است.
HTTPS چیست؟
درخواستهای HTTP این مشکل را داشتند که ارتباط امنی بین کلاینتها و سرورها فراهم نمیکردند. HTTPS یک توسعه از درخواستهای HTTP کلاسیک است که پروتکلهای درخواست را با استفاده از رمزنگاری دوسویه و گواهینامههای دیجیتال سرور (SSL) امن میکند.
این گواهینامههای SSL توسط یک نهاد صدور گواهینامه (CA) که یک طرف مستقل و قابل اعتماد است صادر میشوند و هر دو طرف تراکنش را در یک زنجیره گواهینامه تأیید میکنند.
نتیجه گیری
درخواست HTTP روشی است که یک کلاینت (مانند مرورگر) برای دریافت منابع از یک سرور استفاده میکند. در این فرایند، کلاینت با ارسال یک درخواست شامل خط درخواست، هدرها و بدنه پیام (در صورت نیاز)، از سرور میخواهد دادههای مورد نظر را ارسال کند. سپس سرور با بررسی درخواست، پاسخ مناسب را ارائه میدهد که ممکن است شامل دادههای مورد نظر باشد. این درخواستها روشهای مختلفی مانند GET، POST، PUT و DELETE دارند که هر کدام برای انجام عملی خاص طراحی شدهاند.