علی شکرالهی
بنیانگذار توسینسو و توسعه دهنده

کاملترین معرفی انواع کد خطای HTTP | Status Code

در فرایند درخواست های HTTP ، همیشه یک کد وضعیت (Status Code) از سمت سرور برای مشخص کردن نوع نتیجه ی پاسخ مشخص میگردد که هرکدوم از اونها معنا و مفهوم خاص خودش رو داره ، در این مطلب قصد داریم ، تا بصورت خلاصه شرح هر کد وضعیت رو بررسی کنیم .

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

پاسخهای ارسالی از سمت سرور به 5 دسته تقسیم میشن :

  1. Informational Responses (پاسخهای اطلاع رسانی) که در رنج 100-199 قرار میگیرن
  2. Successful Responses (پاسخهای موفقیت آمیز) که در رنج 200-299 قرار میگیرن
  3. Redirects (انتقالی) که در رنج 300-399 قرار میگیرن
  4. Client Errors (خطاهای سمت مشتری) که در رنج 400-499 قرار میگیرن
  5. Server Errors ( خطاهای سمت سرور) که در رنج 500-599 قرار میگیرن


Informational Responses (پاسخ های اطلاع رسانی)

100 – Continue

سرور هدر درخواست ها رو دریافت کرده و اعلام میکنه که کلاینت body درخواست رو ارسال کنه (در صورتی که درخواست دارای body باشه ، مثلا ارسال POST صورت گرفته باشه).

101 – Switching Protocol

این پاسخ در درخواست Upgrade ارسال شده در header ارسالی از سمت کلاینت برمیگرده و پروتکلی که سرور بهش تغییر پیدا میکنه رو مشخص میکنه (مثلا وقتی قصد اتصال به یک WebSocket رو داشته باشید این مورد رو پیش میاد)

102 – Processing

این درخواست مشخص میکنه سرور درخواست رو دریافت کرده و در حال پردازشش هست ، ولی هنوز پاسخی قابل ارائه نیست.

103 – Early Hints

این کد وضعیت بطور کلی در کنار هدر Link استفاده میشه و این امکان رو به user agent میده که پیش بارگذاری منابع رو تا زمان آماده سازی پاسخ سرور انجام بده


Successful Responses (پاسخ های موفقیت آمیز)

200 – OK

درخواست با موفقیت انجام شد که این موفقیت بسته به نوع درخواست HTTP متفاوت می باشد:

درخواست GET: منبع موردنظر دریافت شده و در message body برای کلاینت ارسال شده است

درخواست HEAD: Representation Headers ها در پاسخ ارسال میشه بدون بدنه ی پیام

درخواست PUT یا POST: نتیجه ی درخواست ارسال شده در Message Body ارسال میشه

درخواست TRACE: Message Body حاوی Request Message دریافتی از سمت سرور می باشد.

201 – Created

درخواست با موفقیت انجام شد و یک منبع جدید در سرور برای درخواست ارسال شده ایجاد شد. معمولا این جوابی هست که در پاسخ به درخواست های POST و PUT ارسال میشه.


202 – Accepted

درخواست ارسالی از سمت سرور دریافت شده ولی هنوز عملیاتی روی درخواست صورت نگرفته. این پاسخ معمولا در حالتهایی که درخواست دریافتی نیاز به پردازش سنگین داره یا Batch processing روی درخواست ها صورت میگیره ارسال میشه  (مثلا شما درخواست رو به RabbitMQ ارسال کردین تا از طریق یه سیستم دیگه ای روش پردازش صورت بگیره )

203 – Non-Authoritative Information

این پاسخ نشون میده که پاسخ ارسالی تغییر پیدا کرده (معمولا وقتی یک proxy server داشته باشید این مسئله پیش میاد)

204 – No Content

سرور درخواست رو با موفقیت پردازش کرده ولی هیچ محتوایی برگردانده نشده

205 – Reset Content

به User-Agent اعلام میکنی که درخواست ازش ارسال شده رو ریست کنه

206 – Partial Content

این کد زمانی برای کلاینت ارسال میشه که در درخواست ارسالی از سمت کلاینت ، هدر Range برای دریافت بخشی از یک resource ارسال شده باشه


پیامهای انتقالی (Redirection Messages)

300 – Multiple Choice

برای درخواست ارسالی ، چند پاسخ مختلف وجود دارد که User-Agent یا کاربر میتونه یکی از اونها رو انتخاب کنه (روش استانداری برای انتخاب از بین گزینه های موجود وجود ندارد، پیاده کننده سیستم میتونه از طریقی که خودش میتونه امکان انتخاب رو به کاربر بده)

301 – Moved Permanently

آدرس درخواستی بطور کامل تغییر پیدا کرده و آدرس جدید در پاسخ ارسال میشه

302 – Found

این کد به معنای این هست که منبع درخواستی بصورت موقت تغییر پیدا کرده .

303 – See Other

سرور زمانی این کد رو برمیگردونه که به کلاینت اعلام کنه منبع درخواستی از طریق یک آدرس دیگه قابل دسترس هست

304 – Not Modified

این کد برای مباحث مربوط به caching استفاده میشه. این کد به کلاینت میگه که تغییری در منبع درخواستی ایجاد نشده و کلاینت میتونه از نسخه ی cache شده ی خودش استفاده کنه .

307 – Temporary Redirect

این کد بدین معناست که کلاینت منبع درخواستی رو از آدرس دیگه ای بگیره ، فقط بایستی درخواست رو با متد قبلی به آدرس جدید ارسال کنه. یعنی اگر یک درخواست POST به UriA ارسال کرده و درجواب UriB رو دریافت کرده ، بایستی مجدد درخواست به UriB رو با متد POST ارسال کنه .


خطاهای سمت مشتری (Client Error Messages)

400 – Bad Request

بدلیل اشتباه بودن اطلاعات ارسالی از سمت کلاینت ، سرور نمیتونه درخواست رو بفهمه

401 – Unauthorized

کلاینت درخواست دریافت منبعی رو داره که اجازه ی دسترسی بهش رو نداره

402 – Payment Required

این کد برای استفاده های آینده رزرو شده و هدفش برای استفاده در سیستم های پرداخت آنلاین هست و در حال حاضر کاربر خاصی نداره .

403 – Forbidden

کلاینت اجازه ی دسترسی به منبع مورد نظر رو نداره (برخلاف خطای 401 ، هویت کلاینت توسط سرور شناخته شده هست ، اما اجازه ی دسترسی به منبع درخواستی رو نداره)

404 – Not Found

منبع درخواستی توسط کلاینت توسط سرور پیدا نشده . در درخواستهایی که توسط مرورگر ارسال میشه یعنی URL مدنظر موجود نیست ولی در API ها میتونه به این معنی باشه که endpoint درست هست ولی ، منبع درخواستی وجود نداره .

همینطور سرور میتونه بجای پاسخ 403 ، خطای 404 رو برگردونه تا وجود منبع مورد نظر رو از نظر درخواست کننده پنهان کنه .

405 - Method Not Allowed

متد درخواست شده توسط سرور معتبر شناخته شده ، اما توسط آدرس ارسالی پشتیبانی نمیشه . برای مثال شما به یک آدرس درخواست POST ارسال میکنید ، در صورتی که اون آدرس GET رو پشتیبانی میکنه


این مطلب مجددا بروزرسانی می شود .


علی شکرالهی
علی شکرالهی

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

علی شکرالهی، بنیانگذار TOSINSO ، توسعه دهنده وب و برنامه نویس موبایل، مهندسی نرم افزار از دانشگاه آزاد اسلامی واحد کرج ، بیش از 15 سال سابقه ی فعالیت های حرفه ای و آموزشی

نظرات