آشنایی با Status Codeهای پروتکل HTTP

آشنایی با Status Code های پروتکل HTTP

آشنایی با کدهای وضعیت HTTP

status code ها یا کدهای وضعیت http ، مثل کدهای خاصی هستند که توسط وب سرور به بالای صفحات وب متصل می شوند و وضعیت یک درخواست یا اتصال HTTP را برای کاربر و توسعه دهنده مشخص می کنند. البته این کدها واقعا جزئی از صفحه ی وب نیستند و معمولا پیامی از سمت سرور است که به شما (کاربر) می گوید وضعیت درخواست ارسالی چطور بوده است.

هر بار که مرورگر شما با سرور کار داشته باشد (هر نوع درخواست و اتصالی که باشد) این کدها به مرورگر ارسال می شوند. البته ما کاربران آن ها را آنقدرها نمی بینیم و چرا که معمولا در قسمت dev tools مرورگرها قرار می گیرند و به کاربر نشان داده نمی شوند. این مسئله برای ارتقای UX بسیار مفید است اما برای ما توسعه دهندگان وب چیز خوبی نیست. اگر شما توسعه دهنده ی وب یا صاحب یک وب سایت هستید حتما باید با این نوع کدهای وضعیت آشنا باشید تا بتوانید در شرایط اضطراری مشکلات وب سایت را حل کرده یا حداقل آن ها را شناسایی کنید.

کدهای وضعیت http از کجا می آیند؟

هر بار که مرورگر شما با یک سرور ارتباط برقرار می کند و آدرس یک سایت را در مرورگر خود وارد می کنید، وب سرور درخواست شما را پردازش کرده و فایل های مورد نیازتان را برایتان ارسال می کند. البته این فایل ها به همراه یک HTTP Header ارسال می شوند و کدهای وضعیت درون همین header قرار دارند. این header از قسمت dev tools مرورگر شما قابل دسترسی است (سربرگ network) ولی در حالت عادی و در صفحه ی وب نمایش داده نمی شود، بلکه معمولا زمانی که خطایی رخ بدهد و مشکلی به وجود بیاید شاهد نمایش این کدها هستیم:

یک نمونه از کد 404 در گوگل
یک نمونه از کد 404 در گوگل

همچنین برای کروم و فایرفاکس افزونه های بسیاری وجود دارد که می تواند کدهای وضعیت را به شما نشان دهد.

دسته بندی کدهای وضعیت

Status code های HTTP معمولا به 5 دسته تقسیم می شوند:

  • دسته ی 100: کدهای این قسمت معمولا شامل اطلاعاتی درباره ی شروع درخواست و ارسال آن هستند.
  • دسته ی 200: این کدها زمانی برگردانده می شوند که درخواست و پردازش آن موفقیت آمیز بوده باشد.
  • دسته ی 300: این دسته از کدها معمولا به redirect ها مربوط هستند، زمانی که یک resource با resource دیگری جایگزین شده است.
  • دسته ی 400: این کدها مشخص می کنند که درخواست ارسال شده دارای مشکل بوده است (خطاهای کلاینت).
  • دسته ی 500: این کدها می گویند که درخواست صحیح بوده است اما در هنگام پردازش آن در سمت سرور با خطا مواجه شده ایم (خطاهای سرور).

تعداد تمامی کدهای وضعیت حدود 40 کد است اما همه ی آن ها برای ما مهم نیستند چرا که در اکثر مواقع فقط با برخی از آن ها سر و کار داریم. به همین خاطر من لیستی از مهم ترین این خطاها را برای شما آماده کرده ام تا با کدهای رایج آشنا شوید.

کدهای دسته ی 200

از این دسته معمولا فقط با کد 200: “Everything is OK.” مواجه می شویم. این کد فقط زمانی برگردانده می شود که resource های وب دقیقا به شکل صحیح کار کنند، زمانی که درخواست کاملا صحیح و پردازش آن نیز صحیح بوده است و هیچ خطایی در هیچ قسمتی از برنامه نداشته ایم.

کدهای دسته ی 300

  • کد 301: این کد معمولا با پیام The requested resource has been moved permanently همراه است که به ما می گوید resource مورد نظر ما (مثلا یک تصویر یا یک صفحه ی وب یا یک فایل و...) جابجا شده است. معمولا از این کد برای redirect کردن دائمی انواع url ها استفاده می شود.
  • کد 302: این کد با پیام The requested resource has moved, but was found. همراه است و می گوید که resource مورد نظر ما پیدا شده است البته در جایی غیر از آدرس مشخص شده! معمولا از این کدها در redirect کردن موقت url ها استفاده می شود.
  • کد 304: این کد معمولا با پیام The requested resource has not been modified since the last time you accessed it همراه است و کار آن اعلام عدم تغییر browser cache است. از این کد استفاده می شود تا به مرورگر اعلام کنیم resource های ما از بازدید قبلی تغییری نداشته اند و مرورگر می تواند از همان resource های دانلود شده ی قبلی استفاده کند تا سرعت بارگذاری صفحات بالاتر برود.

کدهای دسته ی 400

  • کد 401: این کد معمولا با پیام Unauthorized یا Authorization Required ارسال می شود. این پیام به ما می گوید که resource مورد نظر نیاز به احراز هویت دارد و مدارک ارسال شده معتبر نیست. اگر از HTTP authentication استفاده می کنید احتمالا با چنین خطاهایی روبرو شده اید. این مسئله معمولا زمانی اتفاق می افتد که دسترسی به سایت خود را از روی حالت public تغییر داده باشید (مثلا زمانی که می خواهید وب سایت فقط در دسترس افراد خاصی باشد).
  • کد 403: پیام Access to that resource is forbidden که همراه این کد وضعیت ارسال می شود به ما می گوید که کاربر برای دسترسی به یک resource مجوزی ندارد. مثلا بدون login کردن سعی در اتصال به صفحه ی خاصی داشته ایم.
  • کد 404: شایع ترین و شناخته شده ترین کد وضعیت در دنیا است و به کاربر می گوید The requested resource was not found یعنی سرور چنین resource ای ندارد و اصلا نمی داند که این resource تا به حال وجود داشته است یا خیر! مثلا آدرس https://www.roxo.ir/askavskbafbkuafdsuhfudshfdsku854asf در روکسو وجود ندارد بنابراین با خطای 404 مواجه خواهید شد.
  • کد 405: معمولا با پیام Method not allowed برگردانده می شود. این اتفاق زمانی می افتد که سرور میزبانی از متد خاصی پشتیبانی کند اما resource هدف چنین متدی را قبول نمی کند.
  • کد 406: معمولا با پیام Not acceptable response ارسال می شود و می گوید resource ما می تواند تنها محتوایی را تولید کند که بر اساس header های Accept، غیرقابل قبول هستند.
  • کد 408: این کد با پیام The server timed out waiting for the rest of the request from the browser به کاربر ارسال می شود و می گوید که سرور درخواست کامل را از طرف مرورگر دریافت نکرده است. ممکن است در زمان تراکم نت packet های داده به طور کامل ارسال نشوند و با چنین خطایی روبرو شویم.
  • کد 410: این کد با پیام The requested resource is gone and won’t be coming back ارسال می شود و می گوید که resource مورد نظر موجود نیست. البته تفاوت آن با کد 404 در این است که شرایط پیش آمده از قبل پیش بینی شده بوده و یک اتفاق ناخواسته نیست.
  • کد 429: پیام Too many requests مشخص می کند که این کد برای اعلام «تعداد درخواست ها بیش از حد مجاز» ارسال می شود. به زبان ساده تر، هنگامی که تعداد درخواست های ارسال شده از سمت کاربر بیش از حد مجاز باشد، این کد برگردانده خواهد شد.
  • کد 499: پیام همراه این کد Client closed request است. این کد توسط وب سرور NGINX برگردانده می شود و می گوید که کلاینت (کاربر) درخواست را زمانی بسته که NGINX در حال پردازش آن بوده است.
نمونه ای از کد 401 در NGINX
نمونه ای از کد 401 در NGINX
نمونه ای از کد 429
نمونه ای از کد 429

کدهای دسته ی 500

  • کد 500: پیام There was an error on the server and the request could not be completed همراه این کد ارسال می شود. این کد یک کد کلی است که می گوید سرور نتوانسته است درخواست را به طور کامل پردازش کند (به هر دلیلی). این مشکل ممکن است به دلیل پلاگین های وردپرس یا PHP بد یا قطع اتصال به پایگاه داده رخ دهد.
  • کد 501: این کد به همراه پیام Not Implemented ارسال می شود. در واقع این کد می گوید سرور دارای توانایی لازم برای پردازش و انجام درخواست نمی باشد بنابراین تقریبا همیشه به دلیل وجود خطا روی سرور است و باید توسط خود مدیر یا برنامه نویس سایت حل شود.
  • کد 502: که کد معروف Bad Gateway است و زمانی رخ می دهد که یک سرور پاسخ نامناسبی را از یک سرور دیگر دریافت کرده باشد. مثلا برخی اوقات پردازش یک درخواست بیش از حد طول می کشد و سرور نیز آن را قطع می کند، در چنین حالتی نیز کد 502 برگردانده می شود.
  • کد 503: پیام The server is unavailable to handle this request right now مشخص کننده ی این نوع کد وضعیت است و می گوید که سرور توانایی پردازش درخواستی را ندارد. به طور مثال زمانی که تعداد درخواست ها به حد نصاب برسد و سرور توانایی پردازش درخواست های بیشتری را نداشته باشد.
  • کد 504: به همراه پیام The server, acting as a gateway, timed out waiting for another server to respond ارسال می شود. این وضعیت زمانی پیش می آید که دو سرور مختلف درگیر پردازش یک درخواست باشند و سرور اول آنقدر منتظر پاسخ سرور دوم بماند که time out کند (زمان پردازش بیش از حد شده و اتصال قطع شود).
  • کد 521: پیام Web server is down مشخص می کند کارایی این کد چیست؛ این کد مخصوص سرویس Cloudflare است و می گوید که مرورگر با موفقیت به Cloudflare متصل شده است اما Cloudflare نمی تواند به سرور اصلی متصل شود.

در صورت علاقه ی بیشتر به این کدها می توانید لیست کاملی از آن ها را در ویکی پدیا پیدا کنید. همچنین تعریف کامل و دقیق آن ها را نیز می توانید در وب سایت Internet Engineering Task Force مشاهده نمایید.


منبع: سایت kinsta

نویسنده شوید
دیدگاه‌های شما (1 دیدگاه)

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

محمد علی
21 آذر 1398
سلام خسته نباشید من کد 305 رو می گیرم واسه یکی از فایل هام مشکل چیع؟

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

امیر زوارمی
27 آذر 1398
سلام دوست عزیز، کد 305 یعنی منابع مورد نظر فقط از طریق پراکسی در دسترس هستند. موزیلا و اینترنت اکسپلورر از این حالت پشتیبانی نمی کنن بنابراین بهتره برای سایت مورد نظرتون از کروم استفاده کنید. اطلاعات بیشتر: https://dynomapper.com/blog/254-the-6-types-of-http-status-codes-explained

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.