جدول کامل کدهای وضعیت HTTP یا HTTP status codes

جدول کامل کدهای وضعیت HTTP یا HTTP status codes

کدهای وضعیت HTTP یا HTTP status codes از اعداد سه رقمی تشکیل شده اند که نتیجه درخواست یک کلاینت مانند ربات موتور جست و جو و مرورگر را نمایش می دهند. در واقع این کدها پاسخی هستند که توسط سرور ارسال شده و به کلاینت اطلاع می دهند که آیا درخواستی که ارسال کردند موفقیت آمیز بوده و یا خطایی رخ داده است؟

کدهای وضعیت HTTP به صورت کلی به پنج دسته پاسخ های موفق، پاسخ هایی که شامل اطلاعات هستند، تغییر مسیرها، خطاهای سمت سرور و خطاهای سمت کلاینت تقسیم می شوند. هر دسته شامل تعداد مختلفی از پاسخ ها است که در ادامه مطلب به بررسی تمامی کدهای وضعیت HTTP می پردازیم.

1. کدهای 1xx اطلاعاتی (Informational)

کدهای 1xx یکی از انواع کدهای وضعیت HTTP، به این معنی است که درخواست کاربر دریافت و درک شده. این کد به صورت موقت ارسال می شود درحالی که پردازش هنوز ادامه دارد. در نتیجه کلاینت باید منتظر اتمام پردازش و دریافت پاسخ نهایی باشد.

کدهای وضعیت HTTPتوضیح
100Continue – درخواست اولیه دریافت شد، ادامه دهید.
101Switching Protocols – در حال تغییر پروتکل ارتباطی.
102Processing – درخواست در حال پردازش است.
103Early Hints – برای ارسال زودهنگام هدرها استفاده می شود.
کدهای 1xx اطلاعاتی (Informational)

2. کدهای ۲xx موفقیت آمیز (Successful)

کدهای ۲xx نشان می دهد که درخواست (Request) کاربر با موفقیت دریافت، درک، و پذیرفته شده است. در واقع سرور توانسته درخواست کاربر مانند اجرای دستور، ارسال داده یا هر درخواست دیگری را انجام دهد.

کدهای وضعیت HTTPتوضیح
200OK – درخواست با موفقیت انجام شد.
201Created – منبع جدیدی ایجاد شد.
202Accepted – درخواست پذیرفته شد ولی هنوز انجام نشده است.
203Non-Authoritative Information – اطلاعات از منبع غیر اصلی.
204No Content – پاسخ بدون محتوا.
205Reset Content – کلاینت باید محتوا را ریست کند.
206Partial Content – بخشی از داده ارسال شده است.
207Multi-Status – چند وضعیت مختلف در پاسخ (WebDAV).
208Already Reported – آیتم ها قبلاً گزارش شده اند.
226IM Used – سرور پاسخ را با تبدیل خاصی برگردانده است.
کدهای ۲xx موفقیت آمیز (Successful)

3. کدها ۳xx تغییر مسیر (Redirection)

کدهای 3xx نشان می دهد که کلاینت مانند مرورگر، باید اقدام اضافه ای انجام دهد تا درخواستی که ارسال کرده کامل شود. در واقع سرور درخواست کاربر را فهمیده اما پاسخ نهایی در جای دیگری قرار گرفته و کاربر برای رسیدن به پاسخ نهایی باید آدرس جدید را دنبال کند که همان redirect می شود.

اگر با مدیریت محتوا و بکند کار کرده باشید حتما با ریدایرکت (redirect ) آشنایی دارید. زمانی که این درخواست ارسال می شود، مرورگر در صورتی به صورت خودکار به آدرس جدید منتقل می شود که درخواست از نوع GET و HEAD باشد. برای دیگر متدها مانند POST, PUT, DELETE, PATCH به صورت خودکار منتقل نمی شود. در صورتی که ریدایرکت به صورت حلقه ای بی نهایت باشد، مرورگر به صورت خودکار فرایند را متوقف می کند.

کدهای وضعیت HTTPتوضیح
300Multiple Choices – چند گزینه موجود است و کاربر باید انتخاب کند.
301Moved Permanently – صفحه برای همیشه منتقل شده است.
302Found – تغییر مسیر موقت.
303See Other – پاسخ در آدرس دیگری است.
304Not Modified – محتوا تغییری نکرده (کش معتبر).
305Use Proxy – برای دسترسی باید از پروکسی استفاده شود.
306(Unused) – استفاده نمی شود.
307Temporary Redirect – تغییر مسیر موقت بدون تغییر متد.
308Permanent Redirect – تغییر مسیر دائم بدون تغییر متد.
کدها ۳xx تغییر مسیر (Redirection)

4. کدهای ۴xx خطای کاربر (Client Error)

کدهای وضعیت ۴xx زمانی نمایش داده می شوند که خطا از سمت کلاینت مانند مرورگر باشد و از سمت سرور نیست. وقتی با این خطا مواجه می شوید، باید در پاسخ (Response Body) توضیح دهد که چه خطایی رخ داده و آیا این خطا دائمی هست و یا موقتی ایجاد شده؟ فقط در حالتی که درخواست از نوع HEAD باشد، پاسخ نباید بدنه (body) داشته باشد.

کدهای وضعیت 4xx ممکن است در پاسخ به هر نوع متد HTTP (GET، POST، PUT، DELETE، …) بازگردانده شوند. قطعا به صفحه معروف “404 Not Found” برخورد کرده این که نشان می دهد چنین آدرسی در سایت یا وجود ندارد و یاد حذف شده است. البته طراح سایت معمولا این برگه را به دلخواه خود ادیت می کند ولی پیام 404 به وضوح در آن مشخص است.

کدهای وضعیت HTTPتوضیح
400Bad Request – درخواست اشتباه یا نامعتبر است.
401Unauthorized – نیاز به احراز هویت دارد.
402Payment Required – رزرو شده برای پرداخت.
403Forbidden – دسترسی ممنوع است.
404Not Found – منبع یافت نشد.
405Method Not Allowed – متد HTTP مجاز نیست.
406Not Acceptable – محتوا قابل قبول نیست.
407Proxy Authentication Required – نیاز به احراز هویت پروکسی.
408Request Timeout – زمان درخواست تمام شده است.
409Conflict – تداخل در پردازش درخواست.
410Gone – منبع دیگر وجود ندارد.
411Length Required – طول محتوا مشخص نشده است.
412Precondition Failed – پیش شرط ها برآورده نشده اند.
413Payload Too Large – داده بیش از حد بزرگ است.
414URI Too Long – آدرس خیلی طولانی است.
415Unsupported Media Type – نوع داده پشتیبانی نمی شود.
416Range Not Satisfiable – محدوده درخواست نامعتبر است.
417Expectation Failed – انتظار مورد نظر برآورده نشد.
418I’m a Teapot – شوخی (RFC 2324).
421Misdirected Request – درخواست به سرور اشتباه ارسال شده.
422Unprocessable Entity – داده ها قابل پردازش نیستند.
423Locked – منبع قفل شده است.
424Failed Dependency – وابستگی شکست خورده است.
425Too Early – درخواست زود ارسال شده است.
426Upgrade Required – نیاز به ارتقای پروتکل دارد.
428Precondition Required – شرط لازم تعیین نشده است.
429Too Many Requests – درخواست بیش از حد مجاز.
431Request Header Fields Too Large – هدرها بیش از حد بزرگ اند.
451Unavailable For Legal Reasons – به دلایل قانونی مسدود شده است.
 کدهای ۴xx - خطای کاربر (Client Error)

5. کدهای ۵xx خطای سرور (Server Error)

کدهای وضعیت ۵xx نشان می دهد که سرور متوجه خطایی شده و یا به هر دلیلی قادر به انجام درخواست کلاینت نیست. در واقع درخواست کاربر از نظر ساختاری مشکلی نداره ولی سرور هنگام پردازش آن دچار خطا شده است.

به جز درخواست های متد HEAD، سرور در response body توضیح در مورد خطا ارسال کرده و مشخص می کند که آیا این خطا به صور موقتی است (مثلا زمانی که بار زیادی روی سرور است) و یا به صورت دائمی ایجاد شده؟ (مثلا به علت کانفیگ اشتباه و یا ایرادات جدی تر). احتمالا با صفحه خطای معروف “500 Internal Server Error” مواجه شده اید.

کدهای وضعیت HTTPتوضیح
500Internal Server Error – خطای عمومی سرور.
501Not Implemented – قابلیت پشتیبانی نمی شود.
502Bad Gateway – پاسخ نامعتبر از سرور واسط.
503Service Unavailable – سرویس در دسترس نیست.
504Gateway Timeout – سرور واسط زمان پاسخ را از دست داده.
505HTTP Version Not Supported – نسخه HTTP پشتیبانی نمی شود.
506Variant Also Negotiates – خطای پیکربندی در سرور.
507Insufficient Storage – فضای کافی وجود ندارد.
508Loop Detected – حلقه بی پایان در پردازش.
510Not Extended – نیاز به افزونه های بیشتر.
511Network Authentication Required – نیاز به احراز هویت شبکه.
کدهای ۵xx خطای سرور (Server Error)

کدهای وضعیت HTTP چه کاربرد دارد؟

کدهای وضعیت HTTP یا HTTP status codes بیشتر استفاده را برای مرورگرها دارد. چون در هنگام دریافت هر کد، مرورگر می داند باید چه پیامی نمایش دهد یا چه کاری را انجام دهد. مثلا خطای 404 را نمایش دهد یا به آدرس جدید با کد ریدایرکت 301 منتقل شود؟

کدهای وضعیت HTTP برای برنامه نویسان و توسعه دهندگان بکند و مدیران سیستم مانند متخصصان DevOps اهمیت زیادی دارد. هر کد می تواند مشخص کند که آیا برنامه ای نوشته ایم به درستی کار میکند؟ درخواست های کاربر به درستی مدیریت می شود و کدها درستی دریافت می شود و یا سرور نسبت به درخواست ها چه کدهایی را نمایش می دهد؟

 کدهای وضعیت HTTP چه کاربرد دارد؟ EinsIT.ir

همچنین برای پشتیبانی سرورها و رفع خطا نیز این کدها نقش تعیین کننده ای دارند و به مدیر سیستم اطلاع می دهند که مدام بخش دچار مشکل شده و فرایند رفع آن را سریع و دقیق تر می کنند.

در نهایت کدهای وضعیت HTTP می تواند برای مانیتورینگ و تست خودکار سرورها نیز مفید باشد. در مانیتورینگ سرور میتوان هشدارهایی را تعریف کرد که در صورت دریافت کدهای ۵xx، پشتیبان را مطلع کند و گزارش ها ثبت شود.

از مستندات RFC استفاده کنیم؟

RFC مخفف Request For Comments است و به مستندات استاندارد اینترنت گفته می شود. این مستندات توسط IETF (Internet Engineering Task Force) و دیگر گروه های مرتبط منتشر می شوند و هدفشان ارائهٔ مشخصات فنی، پروتکل ها، استانداردها، یا پیشنهادات بهبود اینترنت و شبکه ها است.

اطلاعاتی که در این مقاله در مورد کدهای وضعیت HTTP مشاهده کردید، چکیده ای کاربردی از مستندات RFC است که شمارا با این کدها و علت مشاهده هرکدام آشنا می کند. در صورتی که مشتاق یادگیری مفاهیم بیشتر و بسیار جزئی تر از کدهای وضعیت HTTP هستید، به آدرس در لینک شماره 1 و لینک شماره 2 مراجعه کنید.

نتیجه گیری

دانستن کدهای وضعیت HTTP برای هر توسعه دهنده و یا مدیر سرور می تواند بسیار مفید و از الزامات کار است. حتی امروزه کاربران نیز نسبت به قبل دید فنی تری به مرورگر و آنچه در آن اتفاق میفتد دارند و دید کلی نسبت به این کدها و بخ خصوص کدهای 4xx میتواند آنها برای درک خطا کمک کند. همچنین این دانش میتواند زبان مشترکی میان کاربر و پشتیبان سرور باشد تا سریع تر مشکل را کشف و آن را رفع کند.

سوالات متداول

خیر، کدهای HTTP برای همه کلاینت ها از جمله APIها، ربات ها و برنامه های موبایل نیز کاربرد دارند.
بله، کدهای ۴xx نشان دهنده خطای کاربر یا درخواست نامعتبر هستند، نه خطای سرور..
برخی کدها قابل سفارشی سازی هستند، مثلاً صفحه ۴۰۴، اما خود کد عددی استاندارد است و نباید تغییر کند.
آنچه در این مطلب میخوانید!

دیدگاهتان را بنویسید