کدهای وضعیت HTTP (دریافت پیوندک)

نوشته شده در تاریخ: 14/05/94 | نویسنده:هادی شهیدی

کدهای وضعیت HTTP

زمانی که کاربر آدرسی را در مرورگر خود وارد می کند یک درخواست به سمت سرور (سرور وب سایت موردنظر) می فرستد، در پس زمینه سرور با ارسال کدی به مرورگر کاربر وضعیت درخواست را اعلام می کند، که در اصطلاح به آنها کدهای وضعیت HTTP گفته می شود، به اشتباه در خیلی از موارد این کدها را با عنوان HTTP Errors می شناسند در صورتیکه کلاس 5xx , 4xx جزو خطاهای سرور می باشند.

آشنایی با کدهای وضعیت HTTP می تواند به افزایش دانش وب ما کمک کند کدها به 5 کلاس تقسیم بندی می شوند:

تفاوت HTTP 1.0 و HTTP 1.1:

دو نسخه پروتکل 1.1-1.0 HTTP می باشد که نسخه اولیه 1.0 دارای نقاط ضعف بود و بتدریج این نسخه توسعه داده شد و نسخه 1.1 شکل گرفت نسخه ی تکامل یافته HTTP 1.1 که کدهای وضعیت بیشتری در آن تعریف شده است و امروزه اکثر مرورگرها از آن استفاده می کنند.

کدهای کلاس Continue) 1xx)

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

کد 100 (Continue):

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

کد 101 تعویض پروتکل(Switching Protocols):

درخواست مرورگر از سرور جهت تعویض پروتکل در صورتیکه سرور تعویض پروتکل را مفید ارزیابی کند از HTTP 1.0 به HTTP 1.1 تعویض را انجام خواهد داد.

کد 102 پردازش:(Processing)

از آنجایی که درخواست مرورگر ممکن است پردازش های مختلفی نیاز داشته باشد و این روند زمانبر باشد سرور کد 102 را برای اعلام عملیات درخواستی دریافت شده و حال پردازش می باشد،ارسال می کند.

 کدهای کلاس 2xx موفقیت آمیز (Success)

کدهای سری 200 بیانگر درخواست ارسالی مرورگر توسط سرور دریافت ، پردازش و با موفقیت انجام شده است.

کد 200 پاسخ موفق(OK):

زمانی که درخواست مرورگر بدون نقص توسط سرور دریافت و انجام شود کد 200 ارسال خواهد شد.

کد 201 ایجاد شده(Created):

دریافت موفق درخواست مرورگر و ایجاد یک منبع جدید در سرور است(مانند ایجاد کردن یک فایل در سرور).

کد 202 دریافت شده(Accepted):

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

کد 203 اطلاعات نامعتبر(Non-Authoritative Information):

کد 203 که در ورژن HTTP 1/1 تعریف شده، سرور با موفقیت درخواست را پردازش کرده است اما اطلاعاتی را که به مرورگر برمی گرداند از یک منبع نامعتبر می باشد(مثل اطلاعات کپی شده).

 کد 204 بدون محتوا(No Content):

دریافت این پاسخ از سرور، بدین معنی است که آدرس درخواستی هیچ گونه تغییری از آخرین درخواست تا به حال نداشته است و فایل یا صفحه به صورت قبلی نشان داده می شود.

کد 205 ریست محتوا (Reset Content):

سرور با موفقیت درخواست را پردازش کرده، اما هیچ محتوا ایی را نمایش نمی دهد. اما در سمت کاربر، اطلاعات فعلی  Reset می گردند که معمولا منجر به ایجاد محتوای خالی می شود، این کد مخصوصا برای پاک کردن اطلاعات فرم های وب می تواند مورد استفاده قرار گیرد.

کد 206 محتوای جزئی (Partial Content):

سرور با موفقیت درخواست دریافت جزئی را پردازش کرده است. با این روش برنامه هایی که از GNU wget یا انتقال داده از سرور پشتیبانی می کنند، قادر خواهند بود حتی پس از قطع ارتباط نیز به ادامه دریافت اطلاعات بپردازند. البته این قابلیت باید توسط سرور هم پشتیبانی شود.

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

این کدها برای تغییر مسیر استفاده می شوند، این عملیات معمولا توسط مرورگر و به صورت خودکار انجام می شود. مثلا عمل Redirect به آدرس دیگر، با ارسال کدهای سری 300 انجام می شود.

کد 300 انتخاب چندگانه(Multiple Choices):
در این حالت مرورگر درخواست را ارسال می کند و سرور چندین منبع را برمی گرداند و انتخاب به عهده ی خود مرورگر می باشد.

کد 301 انتقال دائم(Moved Permanently):
کد 301 یکی از مهم ترین و حساس ترین کدهای HTTP مخصوصا در علم سئو است، دریافت این کد از طرف سرور، به معنی انتقال دائم یک آدرس وب، به آدرسی دیگر است.

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

کد 303 دیدن منبع دیگر(See Other)
کد 303 نیز مشابه کد 302 عمل می کند، تفاوت در اینجا، تاکید روی متد GET است، در کد 303 آدرس فعلی و آدرسی که کاربر به آن منتقل می شود، باید از طریق متد GET درخواست شوند که در حالت معمول نیز به اینصورت خواهد بود.

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

کد  305 استفاده از پروکسی(Use Proxy)
سرور برای دسترسی به منبع درخواستی باید از یک پروکسی استفاده کند، پروکسی در واقع سرور واسط بین کاربر و سرور اصلی است.

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

کدهای سری 400 خطای سمت کاربر (Client Error)

این نوع کدهای وضعیت نشان می‌دهند که احتمالاً خطایی در درخواست کاربر رخ داده که باعث جلوگیری پردازش آن در سرور می‌شود.

کد 400 درخواست بد (Bad Request)
کد 400 در زمانی رخ می دهد که کاربر از طریق مرورگر خود درخواستی را برای سرور ارسال می کندکه برای سرور مفهوم نمی باشد(برای مثال انتقال داده بدرستی انجام نشده به واسطه ی قطعی ارتباط و یا سرعت پایین)

کد 401 دسترسی نا معتبر (Unauthorized)
کد 401 به معنی دسترسی غیر مجاز است، منبع درخواستی کاربر به طور کامل غیرمجاز نیست ،بلکه درخواست نیاز به تایید دسترسی (به طور معمول نام کاربری و کلمه عبور) دارد ،در این موارد سرور کادری را مبنی بر ورود نام کاربری و پسورد نمایش می دهد.

کد 402 نیاز به پرداخت (Payment Required)
کد 402 استفاده فعلی ندارد برای مقاصد آینده رزرو شده است. هدف از تعریف آن مربوط به حساب های کاربری است که نیاز به پرداخت وجه دارند.

کد 403، دسترسی غیر مجاز (Forbidden)
کد 403 مربوط به مواقعی است که کاربر درخواست منبعی را از سرور دارد که دسترسی آن برای کلیه کاربران غیر مجاز می باشد و کادری مبنی بر تایید ورود نیز ظاهر نمی شود.

کد 404، منبع درخواستی پیدا نشد (Not Found)
کد 404 در مواقعی ظاهر می شود که منبع درخواستی کاربر موجود نمی باشد یا ممکن است منبع موجود بوده و سپس حذف شده باشد.

کد 405، متد غیر مجاز (Method Not Allowed)
کد 405 به این معنی است که متد استفاده شده کاربر برای درخواست منبع از سرور مجاز نمی باشد در این حالت، معمولا سرور در پاسخ، متد مجاز را نیز ارسال خواهد کرد.

کد 406، غیر قابل قبول (Not Acceptable)
کد 406 به علت وجود کاراکترهای غیرمجاز در درخواست کاربر نمایش داده می شود.

کد 407، نیاز به مجوز پروکسی (Proxy Authentication Required)
عملکرد کد 407 نیز شبیه کد 401 است، با این تفاوت که در اینجا ابتدا کاربر (واسط کاربری) باید از طریق یک پروکسی اعتبار خود را اثبات کند.

کد 408، پایان حداکثر زمان درخواست (Request Timeout)
کد 408 زمانی رخ می دهد که سرور در انتظار پاسخ کاربر است، اما در حداکثر زمان تعیین شده پاسخی دریافت نمی کند.

کد 409، تداخل (Conflict)
کد 409 به معنی تداخل درخواست کاربر با عملیاتی دیگر در سرور بر روی منبع مورد نظر است، به طور مثال دو کاربر در حال ایجاد تغییرات بروی یک فایل باشند و آنرا ذخیره کنند این خطا ظاهر می شود.

کد 410، حذف (Gone)
کد 410 مربوط به زمانی است که کاربر درخواست منبعی را به سرور ارسال می کند که منبع برای همیشه از سرور حذف شده است و به کاربر اعلام می شود که مجددا درخواست خود را ارسال نکند.

کد 411، عدم ارسال طول درخواست (Length Required)
کد 411 به این معنی است که سرور از پاسخ به درخواست کاربر خودداری می کند، زیرا درخواست کاربر طول محتوا (Content-Length) ندارد، کاربر برای رفع مشکل میبایست در Header HTTP طول محتوا (Content-Length) درخواست خود را اضافه کند.

کد 412، شرط رد شده(Precondition Failed)
کد 412 به معنی این است که درخواست کاربر در دسترس نمی باشد و نتیجه بررسی نخست سرور false شده است.

کد 413، درخواست خیلی طولانی (Request Entity Too Large)
کد 413 در حالتی رخ می دهد که طول رشته درخواست ارسالی کاربر، بیش حد مجاز سرور است، بنابراین ارتباط توسط سرور قطع خواهد شد.
کد 414، آدرس وب خیلی طولانی (Request-URL Too Long)
خطای 414 بدین معنی است که  آدرس (URL) درخواستی کاربر طولانی است و سرور توانایی پردازش آنرا ندارد.

کد 415، فرمت پشتیبانی نشده (Unsupported Media Type)
کد 415 زمانی رخ می دهد که در درخواست کاربر فرمت غیر مجازی ارسال شده است که سرور قادر به پردازش آن نیست در اصطلاح آن فرمت پشتیبانی نمی شود.

کد 416،  درخواست خارج از حد (Requested Range Not Satisfiable)
این کد به دلیل ارسال درخواست قسمتی از یک منبع (به فرض بخشی از یک فایل) از سرور است، در حالی که آن قسمت وجود ندارد.

کد 417، انتظارات رد شده(Expectation Failed)
کد 417 به معنی این است که Header HTTP ارسالی  کاربر با انتظاراتسرور همخوانی ندارد یا به طور کل Header ارسال نشده است.

کدهای سری 500، خطای سمت سرور (Server Error)

سری 500 کدهای وضیعت نشان می‌دهند  سرور در زمان پردازش درخواست کاربر با خطای داخلی روبرو شده است، که عموما این خطاها موقت می باشند.

کد 500، خطای داخلی سرور (Internal Server Error)
کد 500 به معنی وقوع یک خطای داخلی در سرور است و معمولا به دلیل نقص تنظیمات در بخش نرم افزاری یا سخت افزاری سرور می باشد.

کد 501،تکمیل نشده (Not Implemented)
این خطا بدین معنی است که سرور قادر به پردازش درخواست ارسالی کاربر نیست.

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

کد 503، سرویس خارج از دسترس (Service Unavailable)
دریافت کد 503 به معنی در دسترس نبودن موقتی سرور می باشد که در چند دقیقه دیگر در دسترس قرار خواهد گرفت.

کد 504، پایان حداکثر زمان واسط (Gateway Timeout)
کد 504 نیز بدین معنی است که سرور واسط (Gateway)پاسخی از سرورهای بالا دست (upstream) در حداکثر زمان مجاز تعیین شده دریافت نمی کند.

کد 505، نسخه HTTP پشتیبانی نمی شود (HTTP Version Not Supported)
کد 505 به معنی پشتیبانی نشدن نسخه HTTP پروتکلی است که کاربر از آن استفاده می کند، معمولا سرور دلیل پشتیبانی نکردن از آن نسخه را نیز به همراه سربرگ های پاسخ خود ارسال می کند.