ویدیو آموزش پروتکل HTTP
March 2022
HTTP چیست؟
پروتکل انتقال ابرمتن (HTTP) پایه و اساس شبکه جهانی وب است و برای بارگذاری صفحات وب استفاده می شود. HTTP پروتکلی برای دریافت منابعی مانند اسناد HTML است. این پروتکل پایه و اساس هر تبادل داده در وب است و یک پروتکل client-server است، به این معنی که درخواست ها توسط کلاینت، معمولاً مرورگر وب، آغاز می شوند.
در این پروتکل معمولا کاربر یک درخواست را ارسال کرده و سرور هم پاسخ مناسب را برمیگرداند. در HTTP کاربر و سرور اطلاعات را براساس پیغام های تکی مبادله میکنند. به درخواستی که کاربر ارسال میکند Request و به پاسخی که سرور برمیگرداند Response گفته میشود.
HTTP که در اوایل دهه 1990 طراحی شد، یک پروتکل قابل توسعه است که در طول زمان تکامل یافته است. http یک پروتکل لایه application است که از طریق TCP یا از طریق یک اتصال TCP رمزگذاری شده با TLS ارسال می شود، اگرچه از نظر تئوری می توان از هر پروتکل انتقال قابل اعتمادی استفاده کرد. به دلیل توسعه پذیری آن، نه تنها برای دریافت اسناد متنی، بلکه برای تصاویر و ویدیوها یا ارسال محتوا به سرورها، مانند نتایج فرم HTML، استفاده می شود.
متدهای HTTP
درخواست های http میتوانند برای اهداف مختلف از متدهای خاصی استفاده کنند. متدهای http هرکدام مصرف خاصی دارند و برای کار خاصی ساخته شده اند. مهم ترین متدهای http به شرح زیر هستند:
- متد GET برای گرفتن اطلاعات استفاده میشود. درخواست هایی که از متد GET استفاده میکنند فقط باید اطلاعات را بخوانند.
- متد POST برای ارسال اطلاعات به سرور استفاده میشود. معمولا داده های ارسال شده با این متد باعث ایجاد تغییر در سرور میشوند.
- متد HEAD درخواستی مشابه متد GET ارسال میکند و برای خواندن اطلاعات استفاده میشود اما انتظار پاسخ بدون بدنه را دارد.
- متد PUT برای ارسال داده به سرور استفاده میشود و هدفش تغییر تمام داده های مربوط به یک منبع در سرور است.
- متد DELETE برای حذف یک منبع از سرور استفاده میشود.
- متد CONNECT یک تونل به سرور شناسایی شده توسط منبع هدف ایجاد می کند.
- متد OPTIONS گزینه های ارتباطی برای منبع هدف را توصیف می کند.
- متد TRACE یک تست پیام را در مسیر رسیدن به منبع هدف انجام می دهد.
- متد PATCH برای تغییر جزئی یک منبع در سرور استفاده میشود.
هدرهای HTTP
هدرهای HTTP به کلاینت و سرور اجازه می دهند اطلاعات اضافی را با درخواست یا پاسخ HTTP ارسال کنند. یک هدر HTTP از نام حساس به حروف کوچک و بزرگ و به دنبال آن یک کولون (:) و سپس مقدار آن تشکیل شده است.
هدرها میتوانند براساس محتویاتشان دسته بندی شوند:
- Request Headers حاوی اطلاعات بیشتری در مورد منبعی است که باید واکشی شود یا در مورد کلاینت درخواست کننده منبع.
- Response Headers اطلاعات بیشتری در مورد پاسخ، مانند موقعیت مکانی آن یا سرور ارائهدهنده آن، دارند.
- Representation headers حاوی اطلاعاتی درباره بدنه منبع، مانند نوع MIME آن، یا کدگذاری/فشرده سازی اعمال شده است.
- Payload headers حاوی اطلاعات مستقل از نمایش در مورد دادهها، از جمله طول محتوا و رمزگذاری مورد استفاده برای حمل و نقل هستند.
کدهای وضعیت در HTTP
کدهای وضعیت یا status code های پروتکل http مشخص میکنند که درخواست های ارسال شده چطور به پایان رسیدند. کدهای وضعیت در پنج دسته بندی قرار میگیرند که با اعداد 1 تا 5 مشخص میشوند. کدهای وضعیت به شکل زیر هستند:
- کدهای 1xx: این کدها خبری(informational) بوده و برای اطلاع رسانی استفاده میشوند.
- کدهای 2xx: کدهای این بخش از نوع موفق(successful) بوده و خبر از پایان رسیدن موفقیت آمیز درخواست ها میدهند.
- کدهای 3xx: این کدها برای مشخص کردن ریدایرکت ها(redirection) استفاده میشوند و مشخص میکنند که درخواست به آدرس دیگری منتقل شده است.
- کدهای 4xx: کدهایی که با عدد 4 شروع میشوند به معنی خطای کلاینت(client error) بوده و مشخص میکنند که در سمت کاربر مشکلی وجود دارد.
- کدهای 5xx: این کدها به معنای خطای سرور(server error) بوده و مشخص میکنند که سرور به مشکل خورده است.
حالا که با دسته بندی های کدها وضعیت در http آشنا شدید میتوانیم چند نمونه از پرکاربردترین آنها را ببینیم:
- کد 102 به معنی Processing بوده و مشخص میکند که درخواست کاربر دریافت شده اما هنوز پاسخی داده نشده است.
- کد 200 به معنی OK بوده و نشان میدهد که درخواست کاربر به درستی دریافت و پاسخ داده شد.
- کد 201 به معنی Created بوده و مشخص میکند که درخواست کاربر به درستی دریافت شده و یک منبع جدید در سرور ایجاد شده است.
- کد 301 به معنی Moved Permanently بوده و نشان میدهد که منبع درخواست شده به طور دائم جا به جا شده است.
- کد 400 به معنی Bad Request بوده و نشان میدهد که درخواست کاربر مشکل داشته و سرور نمیتواند درخواست را پردازش کند.
- کد 404 به معنی Not Found بوده و مشخص میکند که منبع درخواستی در سرور وجود ندارد.
- کد 403 به معنی Forbidden بوده و مشخص میکند که کاربر حق دسترسی به منبع درخواستی را ندارد.
- کد 500 به معنی Internal Server Error بوده و نشان میدهد که سرور با شرایطی مواجه شده که نمیداند چطور آن را کنترل کند.
تفاوت HTTP و HTTPS
پروتکل HTTPS نسخه امن تر HTTP است. تنها تفاوت بین http و https اینست که در https از TLS برای رمزگذاری درخواست و پاسخ استفاده میشود. به همین دلیل https بسیار امن تر از http است و حرف s به معنی secure یا امن است. وبسایت هایی که از http استفاده میکنند در ابتدای آدرس وبسایت کلمه //:http وجود دارد اما وبسایت هایی که از پروتکل https استفاده میکنند کلمه //:https وجود دارد.
Autism
May 2022پاسخ به نظر
ممنون خیلی مفید بود.
میشه تو ریکوئست دادن با پایتون از کش هم استفاده کرد؟
پاسخ به نظر
امیرحسین بیگدلو
May 2022سلام
بله توی پایتون هم میشه کش کرد. توی دوره های جنگو توضیح دادم