در این مقاله خواهید آموخت که کد وضعیت HTTP چیست، همچنین به معرفی انواع HTTP Status code خواهیم پرداخت تا در صورت مواجه با آن‌ها علت نمایش دادن آنها را بدانید.
کدهای وضعیت HTTP مانند 404، 301 و 500 شاید برای یک کاربر معمولی چندان معنایی نداشته باشند، اما برای سئوکاران بسیار مهم هستند. همچنین ربات های موتورهای جستجو مانند ربات گوگل، از این کدها در ارزیابی سلامت یک سایت استفاده می کنند. این کدهای وضعیت، یکی از روش های مشاهده نحوه تعامل مرورگر و سرور هستند.
کد وضعیت HTTP چیست

کد وضعیت اچ تی تی پی (HTTP) یک پیام سه رقمی است از سمت سرور به مرورگر، در پاسخ به درخواست مرورگر! این پیام می‌تواند به معنی انجام شدن درخواست، یا انجام نشدن آن باشد. هنگامی که شما مرورگر را باز کنید و آدرس سایتی را جستجو کنید، سرورهای سایت درخواست شما را بررسی می‌کنند و فایل‌های مورد نظرتان را برای شما می‌فرستند. این فایل‌ها به همراه کدهای وضعیت “HTTP status code” به مرورگر ارسال می‌شوند. البته این کدها در حالت عادی نمایش داده نمی‌شوند. معمولاً زمانی قادر به مشاهده این کدها در مرورگر خود خواهید بود که مشکلی رخ داده باشد.

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


در حالت کلی پنج نوع کد وضعیت HTTP وجود دارد که بیان کننده وضعیت کلی تعامل بین سرور و کاربر است. در لیست زیر انواع کلی این کد ها را مشاهده می کنید.

  • 1xx: کدهای وضعیت حاوی اطلاعات
  • 2xx: کد های وضعیت موفقیت آمیز
  • 3xx: کدهای وضعیت ریدایرکت
  • 4xx: کدهای وضعیت شامل خطا در سمت کاربر
  • 5xx: کدهای وضعیت شامل خطای سرور

انواع کد وضعیت HTTP چیست

کدهای وضعیت 100 (اطلاعات)

اولین کدهای وضعیت که با عدد 100 شروع می‌شوند، به این معنی هستند که سرور درخواست را دریافت کرده و روند را ادامه می دهد.
100 ادامه (Continue):

بدین معنا است که هدر درخواست (request headers) با موفقیت دریافت شده و حال می بایست متن اصلی درخواست (request body) نیز ارسال شود. زمانی که متن اصلی درخواست طولانی می باشد، ابتدا می بایست با ارسال هدر درخواست، از صحیح بودن هدر اطمینان حاصل نموده و پس از دریافت پاسخ 100-continue نسبت به ارسال درخواست اصلی اقدام نمود.
101 پروتکل انتقال (Switching protocols):

این کد به عنوان درخواست آپگرید از جانب مرورگر ارسال می‌شود و نشان‌گر تغییر پروتکل است.
102 پردازش (Processing):

کد 101 نمایان گر این مورد است که سرور درخواست مربوطه را دریافت کرده و در حال پردازش آن می باشد ولی هنوز پاسخی برای ارائه وجود ندارد. این مورد باعث می شود تا clinet اشتباها فرض نکند که ارتباط timeout شده و یا از دست رفته است.
کدهای وضعیت 200 (موفق)

کد وضعیت 2xx به معنای موفقیت آمیز بودن درخواست است و مرورگر اطلاعات مورد انتظار را دریافت کرده است.

200 خوب (Ok):

این کد پاسخی استاندارد است و به این معناست که درخواست HTTP با موفقیت انجام شده است. در متد GET پاسخ شامل بخشی مرتبط به منبع درخواست می باشد. در متد POST پاسخ شامل بخشی است که نتیجه عمل را توصیف می کند.
201 ایجاد شده (Created):

کد 201 بدین معنا است که درخواست تکمیل شده است و منجر به ایجاد منابع جدید شده است. در متدهای POST و یا PUT بدین معنا است که ایجاد (Creation) با موفقیت انجام شده است. در متد POST به منابع جدیدی که ایجاد شده، اشاره خواهد داشت.
‌‌202 پذیرفته شده (Accepted):

درخواست برای پردازش پذیرفته شده است اما هنوز پردازش به پایان نرسیده است.
203 اطلاعات نامعتبر (Non-Authoritative Information):

کد وضعیت 203 به معنای موفقیت آمیز بودن درخواست است. البته اطلاعاتی که دریافت شده با آنچه در سرور مبدا قرار دارد متفاوت است و در عوض از کپی شخص ثالث یا محلی جمع آوری شده است.
204 بدون محتوا (No Content):

این کد بدین معنا است که پروسه تکمیل شده اما هیچ محتوایی بازگردانده نشده است.
کدهای وضعیت 300 (انتقال)

کد وضعیت 3xx به این معنی است که شما مجدداً هدایت شده‌اید و تکمیل درخواست به اقدامات بیشتری نیاز دارد.

300 انتقال چندگانه (Multiple Choices):

این کد مواقعی نمایش داده می شود که برای درخواست کاربر، چند منبع مختلف از سوی سرور پیشنهاد می شود) به عنوان مثال یک فایل با فرمت های مختلف( در این شرایط انتخاب URL نمایش داده شده به صورت خودکار انجام شده یا سرور یکی از URL ها را به عنوان پیش فرض برگزیده و همراه پاسخ خود ارسال می نماید.
301 انتقال دائمی (Moved Permanently):

دریافت این کد از سوی سرور به معنای انتقال همیشگی یک آدرس به آدرسی دیگر است و از این پس تمامی درخواست ها به جای آدرس اولیه به آدرس جدید هدایت می شوند.
302 پیدا شده (Found):

با این کد زمانی مواجه می شوید که منبع درخواست ارسالی به سرور یافت شده ولی مرورگر باید موقتا به آدرس دیگری هدایت شود. در اینجا انتقال به صورت موقت انجام شده و آدرس اصلی همچنان معتبر خواهد بود.
304 اصلاح نشده (Not Modified):

این کد بیانگر این است که اطلاعات فراخوانی شده از سرور از زمان آخرین درخواست ارسالی تغییری نداشته است. بدین معنا که اگر در فایل مورد نظر، از آخرین درخواست تا لحظه فعلی، تغییری صورت نگرفته باشد سرور در پاسخ، کد 304 را ارسال می کند. کاربرد این ریدایرکشن (آدرس دهی مجدد) در کش مرورگرهاست. این کار علاوه بر اینکه باعث صرفه جویی در منابع می شود، در افزایش سرعت پردازش در سمت کاربر و سرور نیز موثر است.
305 پروکسی (Use Proxy):

نمایش این کد از سوی سرور نشانگر این است که اجرای برخی درخواست های ارسالی به سرور نیازمند استفاده از پروکسی (پروکسی در واقع سرور میانجی بین واسط کاربری و سرور اصلی است) می باشد. این در حالی است که بسیاری از مرورگرها به لحاظ امنیتی از این قابلیت پشتیبانی نمی کنند.
306 تغییر پروکسی (Switch Proxy):

مانند کد قبلی عمل می‌کند، با این تفاوت که به کاربر اطلاع می‌دهد برای ادامه پروکسی را تغییر دهد.
کدهای وضعیت 400 (خطای مشتری)

کدهای وضعیت 4xx خطای مشتری به این معنی هستند که وب‌سایت یا صفحه غیر قابل دسترسی است.

400 درخواست بد (Bad Request):

این کد بدین معنا ست که سرور بدلیل وجود مشکل در syntax درخواست، قادر به پردازش و فهم آن نمی باشد، که در این حالت کاربر می بایست تغییرات لازم را در نحوه ی درخواست اعمال کرده و درخواست را با syntax صحیح مجددا ارسال نماید.
401 غیر مجاز (Unauthorized):

این خطا به معنای عدم مجوز دسترسی می باشد بدین معنا که دسترسی به منبع درخواست شده نیازمند اطلاعات ورود کاربری می باشد و چنانچه اطلاعات نامعتبر ارسال گردد با این خطا مواجه خواهید شد. در این حالت پاسخ ارائه شده به مبدا می بایست شامل فیلد سرآیندWWW-Authenticate باشد.
403 ممنوع (Forbidden):

درخواست مشتری رد شده است زیرا کاربر حق دسترسی به محتوا ندارد. تفاوت این خطا با خطای 401 در این است که اینجا هویت کاربر برای سرور کاملا شناخته شده است. اما چون مجاز به استفاده از منبع نیستند، پاسخ مناسب توسط سرور داده نمی‌شود.
404 پیدا نشد (Not Found):

این کد وضعیت HTTP شایع‌ترین کد است. در این حالت ارتباط کاربر با سرور برقرار شده است ولی صفحه مورد درخواست در مسیر مربوطه در سرور موجود نمی باشد. ممکن است در درخواست های بعدی از سمت کاربر این صفحه در مسیر صحیح خود قرار گیرد و یا جایگزینی برای آن در نظر گرفته شود، چنانچه سرور متوجه شود که به برخی دلایل، صفحه مربوطه به طور دائم حذف شده است و آدرس جایگزینی برای آن در نظر گرفته نشده باشد، کد 410 جایگزین خواهد شد.
405 روش غیر مجاز (Method Not Allowed):

متد استفاده شده در درخواست برای منبع قابل شناسایی نیست، در این حالت پاسخ برگشتی می بایست شامل لیستی از متد های مجاز سرور باشد. مثلا استفاده از متد GET در فرم ها (form) که به اطلاعاتی برای ارائه با متد POST نیاز دارد و یا استفاده از متد PUT برای منابع فقط خواندنی (Read-only).
406 غیر قابل قبول (Not Acceptable):

منبعی که درخواست به آن ارسال شده فقط توانایی تولید محتوا را دارد و قادر به پذیرش و انجام درخواست نمی باشد. (قادر به پذیرش فیلد Header درخواست نیست.)
407 مجوز پروکسی (Proxy Authentication Required):

این کد مشابه کد 401 میباشد با این تفاوت که کاربر باید ابتدا به پراکسی سرور شناسانده و تصدیق شده باشد و پس از آن پراکسی میبایست یک Proxy-Authenticate به کاربر ارسال نماید. کاربر میبایست درخواست خود را شامل فیلد هدر Proxy-Authorization تکرار نماید.
408 مهلت درخواست (Request Timeout):

کاربر در زمان در نظر گرفته شده برای پاسخگویی سرور، درخواست را ارسال نکرده است، در این حالت مشکلی در نوع درخواست وجود ندارد (syntax درخواست صحیح است) و کاربر میتواند همین درخواست را مجددا و بدون تغییر به سرور ارسال نماید.
410 رفته (Gone):

این کد مشابه کد 404 می باشد با این تفاوت که صفحه مورد درخواست در مسیر مربوطه به صورت دائمی حذف گردیده است و آدرس جایگزینی نیز برای آن تعریف نشده است. پس از نمایش این کد کاربر نباید درخواست خود را مجددا ارسال نماید زیرا آدرس مربوطه دیگر در دسترس نخواهد بود.
423 قفل شده (Locked):

نشان دهنده ی این است که منبع یا منابعی که درخواست به آن ارسال میشود قفل می باشد و پاسخ سرور می بایست شامل یک پیش شرط مناسب مانند ‘lock-token-submitted’ یا ‘no-conflicting-lock’ باشد.
429 درخواست‌های متعدد (Too Many Requests):

کد 429 بدین معنا است که کاربر تعداد زیادی درخواست در یک بازه زمانی معین ارسال نموده است. پاسخ می بایست شامل وضعیت درخواست بوده و ممکن است شامل Retry-After header (جهت مشخص کردن اینکه چه مدت می بایست تا ارسال درخواست جدید صبر کند) نیز باشد.
451 به دلایل قانونی در دسترس نیست (Unavailable For Legal Reasons):

کاربر منبعی درخواست کرده است که به طور قانونی قابل ارائه نیست. مانند صفحات وب سانسور شده توسط دولت!
کدهای وضعیت 500 (خطای سرور)

کد وضعیت 5xx خطای سرور به این معنی است که اگرچه درخواست از سمت کاربر معتبر است، اما سرور نمی‌تواند درخواست را تکمیل کند. خطاهای سری 5xx به این دلیل که محتوا علاوه بر کاربران برای ربات‌های گوگل نیز نمایش داده نمی‌شود از نظر سئویی بسیار منفی هستند. درصورتی که صاحب یک وب‌سایت هستید و با کد وضعیت HTTP 500 روبرو شدید بهتر است هرچه سریع‌تر اقدام به رفع مشکل کنید.

500 خطای داخلی سرور (Internal Server):

این کد نشانگر عدم توانایی سرور در انجام درخواست به دلیل نامشخص می باشد. مهمترین علت بروز این خطا وجود تنظیمات نادرست در سرور می باشد.
501 اجرا نشده (Not Implemented):

به این معناست که سرور به یکی از دو دلیل عدم تشخیص درخواست و یا عدم امکان اجرای درخواست، قادر به پردازش درخواست ارسالی نمی باشد.
502 (Bad Gateway):

به این معنا است که سرور مربوطه به عنوان یک Gateway یا Proxy سرور عمل می کند که با توجه به درخواستی که برای آن ارسال شده و تنظیمات ست شده برروی آن، امکان دریافت پاسخ معتبر از سرور بالایی (سرور upstream- که مسئول اصلی پاسخگویی به درخواست ارسال شده است) را ندارد.
503 سرویس خارج از دسترس (Service Unavailable):

کد وضعیت 503 به این معنی است که سرور در حال حاضر آماده رسیدگی و پاسخگویی به درخواست مرورگر نیست. این کد وضعیت معمولا هنگامی نمایش داده می‌شود که سرور در حال تعمیر یا نگهداری است و از کاربر یا ربات درخواست می‌کند که بعداً دوباره امتحان کنند.
504 پایان زمان (Gateway Timeout):

این HTTP Status code هنگامی ارسال می‌شود که دو سرور در حال انجام و پردازش یک درخواست باشند و یکی از سرورها به موقع پاسخ دریافت نکند.
505 پروتکل HTTP پشتیبانی نمی‌شود (HTTP Version Not Supported):

این کد بیانگر این است که این سرور از نسخه پروتکل HTTP استفاده شده در درخواست پشتیبانی نمی کند.
509 Bandwidth Limit Exceeded (Apache)

پهناي باند ماهيانه تعريف شده براي وب سايت به اتمام رسيده است.
510 Not Extended

به این معنا است که سرور جهت انجام این درخواست به منابع بیشتری نیاز دارد.
511 احراز هویت شبکه (Network Authentication Required):

کاربر برای دسترسی به شبکه نیاز به احراز هویت دارد که برای رهگیری توسط پروکسی در نظر گرفته شده تا برای کنترل دسترسی به شبکه استفاده گردد. (به عنوان مثال، پرتال های captive نیاز به موافقت با شرایط خدمات، قبل از صدور اجازه دسترسی به اینترنت Wifi دارند.