در این مقاله خواهید آموخت که کد وضعیت HTTP چیست، همچنین به معرفی انواع HTTP Status code خواهیم پرداخت تا در صورت مواجه با آنها علت نمایش دادن آنها را بدانید.
کدهای وضعیت HTTP مانند ۴۰۴، ۳۰۱ و ۵۰۰ شاید برای یک کاربر معمولی چندان معنایی نداشته باشند، اما برای سئوکاران بسیار مهم هستند. همچنین ربات های موتورهای جستجو مانند ربات گوگل، از این کدها در ارزیابی سلامت یک سایت استفاده می کنند. این کدهای وضعیت، یکی از روش های مشاهده نحوه تعامل مرورگر و سرور هستند.
کد وضعیت HTTP چیست
کد وضعیت اچ تی تی پی (HTTP) یک پیام سه رقمی است از سمت سرور به مرورگر، در پاسخ به درخواست مرورگر! این پیام میتواند به معنی انجام شدن درخواست، یا انجام نشدن آن باشد. هنگامی که شما مرورگر را باز کنید و آدرس سایتی را جستجو کنید، سرورهای سایت درخواست شما را بررسی میکنند و فایلهای مورد نظرتان را برای شما میفرستند. این فایلها به همراه کدهای وضعیت “HTTP status code” به مرورگر ارسال میشوند. البته این کدها در حالت عادی نمایش داده نمیشوند. معمولاً زمانی قادر به مشاهده این کدها در مرورگر خود خواهید بود که مشکلی رخ داده باشد.
دستهبندی انواع کد وضعیت HTTP چیست
در حالت کلی پنج نوع کد وضعیت HTTP وجود دارد که بیان کننده وضعیت کلی تعامل بین سرور و کاربر است. در لیست زیر انواع کلی این کد ها را مشاهده می کنید.
- ۱xx: کدهای وضعیت حاوی اطلاعات
- ۲xx: کد های وضعیت موفقیت آمیز
- ۳xx: کدهای وضعیت ریدایرکت
- ۴xx: کدهای وضعیت شامل خطا در سمت کاربر
- ۵xx: کدهای وضعیت شامل خطای سرور
انواع کد وضعیت HTTP چیست
کدهای وضعیت ۱۰۰ (اطلاعات)
اولین کدهای وضعیت که با عدد ۱۰۰ شروع میشوند، به این معنی هستند که سرور درخواست را دریافت کرده و روند را ادامه می دهد.
۱۰۰ ادامه (Continue):
بدین معنا است که هدر درخواست (request headers) با موفقیت دریافت شده و حال می بایست متن اصلی درخواست (request body) نیز ارسال شود. زمانی که متن اصلی درخواست طولانی می باشد، ابتدا می بایست با ارسال هدر درخواست، از صحیح بودن هدر اطمینان حاصل نموده و پس از دریافت پاسخ ۱۰۰-continue نسبت به ارسال درخواست اصلی اقدام نمود.
۱۰۱ پروتکل انتقال (Switching protocols):
این کد به عنوان درخواست آپگرید از جانب مرورگر ارسال میشود و نشانگر تغییر پروتکل است.
۱۰۲ پردازش (Processing):
کد ۱۰۱ نمایان گر این مورد است که سرور درخواست مربوطه را دریافت کرده و در حال پردازش آن می باشد ولی هنوز پاسخی برای ارائه وجود ندارد. این مورد باعث می شود تا clinet اشتباها فرض نکند که ارتباط timeout شده و یا از دست رفته است.
کدهای وضعیت ۲۰۰ (موفق)
کد وضعیت ۲xx به معنای موفقیت آمیز بودن درخواست است و مرورگر اطلاعات مورد انتظار را دریافت کرده است.
۲۰۰ خوب (Ok):
این کد پاسخی استاندارد است و به این معناست که درخواست HTTP با موفقیت انجام شده است. در متد GET پاسخ شامل بخشی مرتبط به منبع درخواست می باشد. در متد POST پاسخ شامل بخشی است که نتیجه عمل را توصیف می کند.
۲۰۱ ایجاد شده (Created):
کد ۲۰۱ بدین معنا است که درخواست تکمیل شده است و منجر به ایجاد منابع جدید شده است. در متدهای POST و یا PUT بدین معنا است که ایجاد (Creation) با موفقیت انجام شده است. در متد POST به منابع جدیدی که ایجاد شده، اشاره خواهد داشت.
۲۰۲ پذیرفته شده (Accepted):
درخواست برای پردازش پذیرفته شده است اما هنوز پردازش به پایان نرسیده است.
۲۰۳ اطلاعات نامعتبر (Non-Authoritative Information):
کد وضعیت ۲۰۳ به معنای موفقیت آمیز بودن درخواست است. البته اطلاعاتی که دریافت شده با آنچه در سرور مبدا قرار دارد متفاوت است و در عوض از کپی شخص ثالث یا محلی جمع آوری شده است.
۲۰۴ بدون محتوا (No Content):
این کد بدین معنا است که پروسه تکمیل شده اما هیچ محتوایی بازگردانده نشده است.
کدهای وضعیت ۳۰۰ (انتقال)
کد وضعیت ۳xx به این معنی است که شما مجدداً هدایت شدهاید و تکمیل درخواست به اقدامات بیشتری نیاز دارد.
۳۰۰ انتقال چندگانه (Multiple Choices):
این کد مواقعی نمایش داده می شود که برای درخواست کاربر، چند منبع مختلف از سوی سرور پیشنهاد می شود) به عنوان مثال یک فایل با فرمت های مختلف( در این شرایط انتخاب URL نمایش داده شده به صورت خودکار انجام شده یا سرور یکی از URL ها را به عنوان پیش فرض برگزیده و همراه پاسخ خود ارسال می نماید.
۳۰۱ انتقال دائمی (Moved Permanently):
دریافت این کد از سوی سرور به معنای انتقال همیشگی یک آدرس به آدرسی دیگر است و از این پس تمامی درخواست ها به جای آدرس اولیه به آدرس جدید هدایت می شوند.
۳۰۲ پیدا شده (Found):
با این کد زمانی مواجه می شوید که منبع درخواست ارسالی به سرور یافت شده ولی مرورگر باید موقتا به آدرس دیگری هدایت شود. در اینجا انتقال به صورت موقت انجام شده و آدرس اصلی همچنان معتبر خواهد بود.
۳۰۴ اصلاح نشده (Not Modified):
این کد بیانگر این است که اطلاعات فراخوانی شده از سرور از زمان آخرین درخواست ارسالی تغییری نداشته است. بدین معنا که اگر در فایل مورد نظر، از آخرین درخواست تا لحظه فعلی، تغییری صورت نگرفته باشد سرور در پاسخ، کد ۳۰۴ را ارسال می کند. کاربرد این ریدایرکشن (آدرس دهی مجدد) در کش مرورگرهاست. این کار علاوه بر اینکه باعث صرفه جویی در منابع می شود، در افزایش سرعت پردازش در سمت کاربر و سرور نیز موثر است.
۳۰۵ پروکسی (Use Proxy):
نمایش این کد از سوی سرور نشانگر این است که اجرای برخی درخواست های ارسالی به سرور نیازمند استفاده از پروکسی (پروکسی در واقع سرور میانجی بین واسط کاربری و سرور اصلی است) می باشد. این در حالی است که بسیاری از مرورگرها به لحاظ امنیتی از این قابلیت پشتیبانی نمی کنند.
۳۰۶ تغییر پروکسی (Switch Proxy):
مانند کد قبلی عمل میکند، با این تفاوت که به کاربر اطلاع میدهد برای ادامه پروکسی را تغییر دهد.
کدهای وضعیت ۴۰۰ (خطای مشتری)
کدهای وضعیت ۴xx خطای مشتری به این معنی هستند که وبسایت یا صفحه غیر قابل دسترسی است.
۴۰۰ درخواست بد (Bad Request):
این کد بدین معنا ست که سرور بدلیل وجود مشکل در syntax درخواست، قادر به پردازش و فهم آن نمی باشد، که در این حالت کاربر می بایست تغییرات لازم را در نحوه ی درخواست اعمال کرده و درخواست را با syntax صحیح مجددا ارسال نماید.
۴۰۱ غیر مجاز (Unauthorized):
این خطا به معنای عدم مجوز دسترسی می باشد بدین معنا که دسترسی به منبع درخواست شده نیازمند اطلاعات ورود کاربری می باشد و چنانچه اطلاعات نامعتبر ارسال گردد با این خطا مواجه خواهید شد. در این حالت پاسخ ارائه شده به مبدا می بایست شامل فیلد سرآیندWWW-Authenticate باشد.
۴۰۳ ممنوع (Forbidden):
درخواست مشتری رد شده است زیرا کاربر حق دسترسی به محتوا ندارد. تفاوت این خطا با خطای ۴۰۱ در این است که اینجا هویت کاربر برای سرور کاملا شناخته شده است. اما چون مجاز به استفاده از منبع نیستند، پاسخ مناسب توسط سرور داده نمیشود.
۴۰۴ پیدا نشد (Not Found):
این کد وضعیت HTTP شایعترین کد است. در این حالت ارتباط کاربر با سرور برقرار شده است ولی صفحه مورد درخواست در مسیر مربوطه در سرور موجود نمی باشد. ممکن است در درخواست های بعدی از سمت کاربر این صفحه در مسیر صحیح خود قرار گیرد و یا جایگزینی برای آن در نظر گرفته شود، چنانچه سرور متوجه شود که به برخی دلایل، صفحه مربوطه به طور دائم حذف شده است و آدرس جایگزینی برای آن در نظر گرفته نشده باشد، کد ۴۱۰ جایگزین خواهد شد.
۴۰۵ روش غیر مجاز (Method Not Allowed):
متد استفاده شده در درخواست برای منبع قابل شناسایی نیست، در این حالت پاسخ برگشتی می بایست شامل لیستی از متد های مجاز سرور باشد. مثلا استفاده از متد GET در فرم ها (form) که به اطلاعاتی برای ارائه با متد POST نیاز دارد و یا استفاده از متد PUT برای منابع فقط خواندنی (Read-only).
۴۰۶ غیر قابل قبول (Not Acceptable):
منبعی که درخواست به آن ارسال شده فقط توانایی تولید محتوا را دارد و قادر به پذیرش و انجام درخواست نمی باشد. (قادر به پذیرش فیلد Header درخواست نیست.)
۴۰۷ مجوز پروکسی (Proxy Authentication Required):
این کد مشابه کد ۴۰۱ میباشد با این تفاوت که کاربر باید ابتدا به پراکسی سرور شناسانده و تصدیق شده باشد و پس از آن پراکسی میبایست یک Proxy-Authenticate به کاربر ارسال نماید. کاربر میبایست درخواست خود را شامل فیلد هدر Proxy-Authorization تکرار نماید.
۴۰۸ مهلت درخواست (Request Timeout):
کاربر در زمان در نظر گرفته شده برای پاسخگویی سرور، درخواست را ارسال نکرده است، در این حالت مشکلی در نوع درخواست وجود ندارد (syntax درخواست صحیح است) و کاربر میتواند همین درخواست را مجددا و بدون تغییر به سرور ارسال نماید.
۴۱۰ رفته (Gone):
این کد مشابه کد ۴۰۴ می باشد با این تفاوت که صفحه مورد درخواست در مسیر مربوطه به صورت دائمی حذف گردیده است و آدرس جایگزینی نیز برای آن تعریف نشده است. پس از نمایش این کد کاربر نباید درخواست خود را مجددا ارسال نماید زیرا آدرس مربوطه دیگر در دسترس نخواهد بود.
۴۲۳ قفل شده (Locked):
نشان دهنده ی این است که منبع یا منابعی که درخواست به آن ارسال میشود قفل می باشد و پاسخ سرور می بایست شامل یک پیش شرط مناسب مانند ‘lock-token-submitted’ یا ‘no-conflicting-lock’ باشد.
۴۲۹ درخواستهای متعدد (Too Many Requests):
کد ۴۲۹ بدین معنا است که کاربر تعداد زیادی درخواست در یک بازه زمانی معین ارسال نموده است. پاسخ می بایست شامل وضعیت درخواست بوده و ممکن است شامل Retry-After header (جهت مشخص کردن اینکه چه مدت می بایست تا ارسال درخواست جدید صبر کند) نیز باشد.
۴۵۱ به دلایل قانونی در دسترس نیست (Unavailable For Legal Reasons):
کاربر منبعی درخواست کرده است که به طور قانونی قابل ارائه نیست. مانند صفحات وب سانسور شده توسط دولت!
کدهای وضعیت ۵۰۰ (خطای سرور)
کد وضعیت ۵xx خطای سرور به این معنی است که اگرچه درخواست از سمت کاربر معتبر است، اما سرور نمیتواند درخواست را تکمیل کند. خطاهای سری ۵xx به این دلیل که محتوا علاوه بر کاربران برای رباتهای گوگل نیز نمایش داده نمیشود از نظر سئویی بسیار منفی هستند. درصورتی که صاحب یک وبسایت هستید و با کد وضعیت HTTP 500 روبرو شدید بهتر است هرچه سریعتر اقدام به رفع مشکل کنید.
۵۰۰ خطای داخلی سرور (Internal Server):
این کد نشانگر عدم توانایی سرور در انجام درخواست به دلیل نامشخص می باشد. مهمترین علت بروز این خطا وجود تنظیمات نادرست در سرور می باشد.
۵۰۱ اجرا نشده (Not Implemented):
به این معناست که سرور به یکی از دو دلیل عدم تشخیص درخواست و یا عدم امکان اجرای درخواست، قادر به پردازش درخواست ارسالی نمی باشد.
۵۰۲ (Bad Gateway):
به این معنا است که سرور مربوطه به عنوان یک Gateway یا Proxy سرور عمل می کند که با توجه به درخواستی که برای آن ارسال شده و تنظیمات ست شده برروی آن، امکان دریافت پاسخ معتبر از سرور بالایی (سرور upstream- که مسئول اصلی پاسخگویی به درخواست ارسال شده است) را ندارد.
۵۰۳ سرویس خارج از دسترس (Service Unavailable):
کد وضعیت ۵۰۳ به این معنی است که سرور در حال حاضر آماده رسیدگی و پاسخگویی به درخواست مرورگر نیست. این کد وضعیت معمولا هنگامی نمایش داده میشود که سرور در حال تعمیر یا نگهداری است و از کاربر یا ربات درخواست میکند که بعداً دوباره امتحان کنند.
۵۰۴ پایان زمان (Gateway Timeout):
این HTTP Status code هنگامی ارسال میشود که دو سرور در حال انجام و پردازش یک درخواست باشند و یکی از سرورها به موقع پاسخ دریافت نکند.
۵۰۵ پروتکل HTTP پشتیبانی نمیشود (HTTP Version Not Supported):
این کد بیانگر این است که این سرور از نسخه پروتکل HTTP استفاده شده در درخواست پشتیبانی نمی کند.
۵۰۹ Bandwidth Limit Exceeded (Apache)
پهناي باند ماهيانه تعريف شده براي وب سايت به اتمام رسيده است.
۵۱۰ Not Extended
به این معنا است که سرور جهت انجام این درخواست به منابع بیشتری نیاز دارد.
۵۱۱ احراز هویت شبکه (Network Authentication Required):
کاربر برای دسترسی به شبکه نیاز به احراز هویت دارد که برای رهگیری توسط پروکسی در نظر گرفته شده تا برای کنترل دسترسی به شبکه استفاده گردد. (به عنوان مثال، پرتال های captive نیاز به موافقت با شرایط خدمات، قبل از صدور اجازه دسترسی به اینترنت Wifi دارند.