1382

جزئیات وبلاگ

shape
shape
shape
shape
shape
shape
shape
1394/12/05 - مقالات

HTTP: پروتکلی که هر توسعه دهنده وب باید بداند

HTTP مخفف Hypertext Transfer Protcol است. این پروتکل برای ارتباط بین سیستم های توزیع شده و به عنوان پایه ای برای وب مدرن ساخته شده است. به عنوان یک توسعه دهنده وب باید اطلاعات قوی در مورد این پروتکل داشته باشیم.

در این مطلب نگاهی به پایه HTTP و کدهای ارسال شده در response میپردازیم.

پایه های HTTP

HTTP باعث میشود که بین کلاینت ها و هاست ها ارتباط برقرار شود و همچنین از ترکیبی از تنظیمات شبکه پشتیبانی میکند.

HTTP پروتکلی جهانی است. ارتباطات معمولا بر روی مدل TCP/IP انجام میشود ولی میتوان از مدل های دیگر نیز استفاده کرد و پورت پیشفرض TCP/IP 80 است اما میتوان از پورت های دیگر نیز استفاده کرد.


ارتباطات بین کلاینت ها و هاست از طریق درخواست/پاسخ (request/response) انجام میشود. کلاینت یک درخواست HTTP را آغاز میکند و سرویس مورد استفاده از طریق HTTP پاسخ را بازگشت میدهد.
نسخه حال حاظر این پروتکل HTTP/1.1 است
URLها
قلب ارتباطات وب محتوای درخواست (request) است که کلاینت آن را ارسال میکند که این درخواست از طریق URL یا Unifrom Resource Locators انجام میشود. URLها دارای ساختمان ساده ای هستند که میتوانید در عکس زیر آن را ببینید.

پروتکل معمولا HTTP است اما در اتصالات امن به HTTPS تغییر میکند. پورت نیز معمولا 80 است اما میتوان مانند عکس بالا به صراحت آن را تغییر داد. resource path نیز آدرس فایل مورد نظر در سرور است.
معنی کدهای response
وقتی یک درخواست از کلاینت ایجاد و از طریق URL ارسال میشود, سرور جواب را همراه یک کد بازگشت میدهد. این کد نوع پاسخ سرور را میرساند. پروتکل HTTP کدهای خاصی را برای هر نوع پاسخ درنظر گرفته است.
1xx: پیام های اطلاعاتی (Informational Messages)
این کلاس از کدها در HTTP/1.1 ایجاد شده است. سرور میتواند کد Expect: 100-continue را به کلاینت ارسال کند که به معنی این است که این درخواست قبلا ارسال شده است.
2xx: موفقیت آمیز (Successful)
این کلاس از کدها به این معنی است که درخواست کلاینت به درستی پردازش شده است. بیشترین کد رایج 200 OK است.
کد 202: درخواست پذیرفته شده است اما ممکن است منابع درخواست شده در response نباشد.
کد 204: بدون محتوا: هیچ محتوایی در قسمت body response وجود ندارد.
کد 205: رفرش محتوا: به کلاینت نشان میدهد که سند را رفرش کند.
کد 206: محتوای ناقص: به کلاینت می گوید که response تنها شامل بخشی از محتوا است.
3xx: تغییر مسیر (Redirection)
این کلاس از کدها نشان دهنده این است که کلاینت باید یک اقدام اضافه دیگری نیز انجام دهد. اغلب برای تغییر مسیر به یک URL دیگر استفاده میشود.
کد 301: انتقال دائمی: منابع از این پس در یک URL جدید هستند.
کد 302: انتقال موقت: منابع به طور موقت در یک URL جدید قرار گرفته اند. مقدار Location در response شامل URL موقتی است.
کد 304: اصلاح نشده: سرور مشخص میکند که اطلاعات انتقال داده نشده است اما کلاینت باید از نسخه cash شده سایت استفاده کند.
4xx: خطای درخواست (Client Error)
سرور زمانی که تشخیص بدهد که کلاینت دچار خطا در ارسال درخواست شده است از این کلاس از کدها استفاده میکند. کد رایج در این کلاس 404 Not Found است که فکر میکنم همگی با آن آشنا هستیم. این کد نشان دهنده این است که آدرس درخواستی در سرور موجود نیست.
کد 400: درخواست بد: دریافت درخواست ناقص بود
کد 401: غیر مجاز (Unauthorized): درخواست نیاز به شناسایی دارد. به این معنی که ابتدا باید با استفاده از Username و Password وارد سایت شده و شناسایی شوید سپس درخواست را ارسال کنید.
کد 403: ممنوع (Forvidden): سرور دسترسی به این منبع را قطع کرده است.
کد 405: متد ارسالی درست نیست (Method Not Allowed): متد ارسالی درست نیست و یا اینکه سرور از آن پشتیبانی نمیکند.
کد 409: برخورد (Conflict): سرور نمیتواند درخواست را تکمیل کند زیرا یک کلاینت در حال تغییر منبع است.
5xx: خطای سرور (Server Error)
این کلاس از خطاها زمانی رخ میدهد که سرور دچار خطا شده باشد. کد رایج در این کلاس 500 Internal Server Error است.
کد 501: پیاده سازی نشده (Not Implemented): سرور هنوز برای پشتیبانی از این درخواست پیکربندی نشده است.
کد 503: بدون دسترس (Server Unavailable): معمولا زمانی زخ میدهد که سرور دچار خرابی شده است و یا دچار timeout شده است.
اطلاعات کامل در مورد پروتکل HTTP را میتوانید از سایت W3 بگیرید.

HTTP: پروتکلی که هر توسعه دهنده وب باید بداند