بررسی ارورهای HTTP response status codes
کدهای وضعیت پاسخ HTTP کدهای سه رقمی هستند که توسط یک سرور در پاسخ به درخواست یک مرورگر وب یا برنامه مشتری دیگر تولید می شوند. این کدها نشان می دهد که آیا درخواست موفقیت آمیز بوده، منجر به خطا شده است یا نیاز به اقدام اضافی دارد. آنها به عنوان شکلی از زبان جهانی برای سرورها و مشتریان در اینترنت عمل می کنند.
کدهای وضعیت پاسخ HTTP نشان می دهد که آیا درخواست خاصی با موفقیت تکمیل شده است. پاسخ ها به پنج کلاس طبقه بندی می شوند:
- Informational responses (
۱۰۰
–۱۹۹
) - Successful responses (
۲۰۰
–۲۹۹
) - Redirection messages (
۳۰۰
–۳۹۹
) - Client error responses (
۴۰۰
–۴۹۹
) - Server error responses (
۵۰۰
–۵۹۹
)
در اینجا مروری بر پنج نوع اصلی کدهای وضعیت HTTP آورده شده است:
۱xx Informational: این کدها نشان می دهد که درخواست در حال رسیدگی است و مشتری باید منتظر پاسخ نهایی باشد.
۲xx Success: این کدها نشان می دهد که درخواست به درستی دریافت، درک و پذیرفته شده است. بیشترین کد موفقیت ۲۰۰ OK است که نشان می دهد درخواست با موفقیت انجام شده و داده های مورد نظر در پاسخ گنجانده شده است.
۳xx Redirection: این کدها نشان میدهند که مشتری باید اقدامات بیشتری برای تکمیل درخواست انجام دهد. این معمولاً مستلزم تغییر مسیر به یک URL دیگر است.
۴xx Client Error: این کدها نشان می دهد که درخواست اشتباه یا نامعتبر بوده است. این می تواند نتیجه اشتباه تایپی در URL، داده های از دست رفته یا مشکل فرمت درخواست باشد.
۵xx Server Error: این کدها نشان می دهد که خطایی رخ داده و سرور قادر به تکمیل درخواست نیست. این ممکن است نتیجه یک مشکل گذرا یا مشکل در تنظیمات سرور باشد. (به عنوان مثال، خطای سرور داخلی ۵۰۰، دروازه بد ۵۰۲).
بررسی ارورهای HTTP response status codes
۱۰۰ Continue
: این پاسخ موقت مشخص می کند که آیا مشتری باید درخواست را ادامه دهد یا اگر قبلاً تکمیل شده است، آن را نادیده بگیرد.
۱۰۱ Switching Protocols
: این کد در پاسخ به هدر درخواست ارتقاء مشتری برگردانده می شود و نشان می دهد که سرور به کدام پروتکل سوئیچ می کند.
۱۰۲ Processing
: این عدد نشان می دهد که سرور درخواست را دریافت کرده و در حال پردازش است، اما هنوز پاسخی دریافت نشده است.
۱۰۳ Early Hints
: این کد وضعیت اساساً برای استفاده همراه با هدر پیوند در نظر گرفته شده است، و به عامل کاربر اجازه میدهد تا قبل از بارگیری منابع را شروع کند، در حالی که سرور پاسخی را آماده میکند یا به منبعی متصل میشود که صفحه از آن به منابع نیاز دارد.
ارورهای Successful responses
درخواست موفقیت آمیز بود. تعریف “موفقیت” به روش HTTP بستگی دارد.
GET: منبع بازیابی و در متن پیام تحویل داده شد.
HEAD: پاسخ شامل سرصفحه های نمایش است اما بدنه پیام را شامل نمی شود.
PUT یا POST: بدنه پیام حاوی منبعی است که نتیجه عمل را توصیف می کند.
TRACE: محتوای پیام شامل پیام درخواستی است که توسط سرور دریافت شده است.
۲۰۱ Created
: درخواست با موفقیت انجام شد و منبع جدیدی در نتیجه ایجاد شد. این اغلب پاسخ به درخواست های POST یا PUT است.
۲۰۲ Accepted
: درخواست دریافت شده است اما هنوز به آن رسیدگی نشده است. غیرمتعهد است زیرا HTTP ارسال یک پاسخ ناهمزمان برای بیان نتیجه درخواست را ارائه نمی دهد. این برای استفاده در زمانی که پردازش یا سرور دیگری درخواست را رسیدگی می کند یا برای پردازش دسته ای طراحی شده است.
۲۰۳ Non-Authoritative Information
: این شماره پاسخ نشان می دهد که ابرداده داده شده دقیقاً مشابه آنچه از سرور اصلی در دسترس است نیست، بلکه از طریق یک نسخه محلی یا شخص ثالث به دست آمده است. این معمولاً برای انعکاس یا پشتیبان گیری از یک منبع دیگر استفاده می شود. به جز در آن شرایط خاص، پاسخ ۲۰۰ OK بر این وضعیت ارجحیت دارد.
۲۰۴ No Content
: محتوایی برای انتقال با این درخواست وجود ندارد، اما سرصفحه ها می توانند مفید باشند. عامل کاربر ممکن است سرصفحه های کش شده برای این منبع را با هدرهای تازه جایگزین کند.
۲۰۵ Reset Content
: به عامل کاربر میگوید سندی را که این درخواست را ایجاد کرده بازنشانی کند.
۲۰۶ Partial Content
: این کد پاسخ زمانی استفاده می شود که کلاینت هدر Range را ارسال می کند و تنها بخشی از یک منبع را درخواست می کند.
۲۰۷ Multi-Status
: در مواردی که ممکن است چندین کد وضعیت مرتبط باشند، اطلاعاتی در مورد منابع متعدد ارائه می دهد.
۲۰۸ Already Reported
: این در یک عنصر پاسخ <dav:propstat> استفاده می شود تا از برشمردن اعضای داخلی پیوندهای متعدد به یک مجموعه جلوگیری شود.
۲۲۶ IM Used
: سرور یک درخواست GET برای منبع را برآورده کرده است و پاسخ نتیجه یک یا چند اصلاح نمونه انجام شده در نمونه فعلی را نشان می دهد.
ارورهای Redirection messages
۳۰۰ Multiple Choices
: درخواست شامل چندین پاسخ ممکن است. عامل کاربر یا کاربر باید یکی از این موارد را انتخاب کند. (روش تعریف شده ای برای انتخاب یکی از پاسخ ها وجود ندارد، اما لینک های HTML به گزینه ها ارائه می شود تا کاربر بتواند انتخاب کند.)
۳۰۱ Moved Permanently
: آدرس URL برای منبع درخواستی به طور دائم تغییر کرده است. URL جدید در پاسخ ارائه شده است.
۳۰۲ Found
: این کد پاسخ نشان می دهد که URI برای منبع درخواستی به طور موقت اصلاح شده است. ممکن است در آینده تغییرات بیشتری در URI ایجاد شود. بنابراین، مشتری باید از همان URI در درخواستهای بعدی استفاده کند.
۳۰۳ See Other
: سرور این پاسخ را ارسال کرد تا به مشتری دستور دهد از یک درخواست GET برای بازیابی منبع درخواستی از URI دیگر استفاده کند.
۳۰۴ Not Modified
: این به دلایل ذخیره سازی است. به مشتری اطلاع می دهد که پاسخ تغییر نکرده است و به مشتری اجازه می دهد تا از نسخه کش پاسخ استفاده کند.
۳۰۵ Use Proxy
: در نسخه قبلی مشخصات HTTP تعریف شده است تا نشان دهد که پاسخ درخواستی باید از طریق یک پروکسی بازیابی شود. به دلیل نگرانی های امنیتی در مورد تنظیمات پراکسی درون باند منسوخ شد.
۳۰۶ unused
: این کد پاسخ دیگر استفاده نمی شود. به سادگی رزرو شده است. در نسخه قبلی مشخصات HTTP/1.1 ظاهر شد.
۳۰۷ Temporary Redirect
: سرور این پاسخ را برمی گرداند تا مشتری را هدایت کند تا منبع درخواستی را در یک URI دیگر با استفاده از مکانیزم مشابه در درخواست قبلی بازیابی کند. این دارای همان معنای کد پاسخ HTTP 302 Found است، با این استثنا که عامل کاربر نمی تواند روش HTTP استفاده شده را تغییر دهد: اگر POST در درخواست اول استفاده شده است، باید دوباره در درخواست دوم استفاده شود.
۳۰۸ Permanent Redirect
: این نشان می دهد که منبع اکنون به طور دائم در یک URI دیگر قرار دارد، همانطور که توسط هدر Location: HTTP Response نشان داده شده است. این همان معنای کد پاسخ HTTP 301 Moved Permanently HTTP است، با این تفاوت که عامل کاربر نمی تواند روش HTTP استفاده شده را تغییر دهد: اگر POST در درخواست اول استفاده شده است، باید دوباره در درخواست دوم استفاده شود.
ارورهای Server error responses
۴۰۰ Bad Request
: سرور نمی تواند یا نمی خواهد به دلیل مشکل مشتری درک شده (به عنوان مثال، نحو درخواست معیوب، کادربندی پیام درخواست نامعتبر، یا مسیریابی درخواست فریبنده) درخواست را پردازش کند.
۴۰۱ Unauthorized
: اگرچه استاندارد HTTP “غیرمجاز” را تعریف می کند، اما این پاسخ از نظر منطقی معادل “غیر احراز هویت” است. برای دریافت پاسخ مورد نیاز، مشتری ابتدا باید خود را احراز هویت کند.
۴۰۲ Payment Required
: این کد پاسخ برای استفاده در آینده حفظ شده است. هدف در نظر گرفته شده برای توسعه این کد، استفاده از آن در سیستم های پرداخت دیجیتال بود. با این حال، این کد وضعیت نسبتاً به ندرت استفاده می شود، و هیچ قرارداد یکسانی وجود ندارد.
۴۰۳ Forbidden
: مشتری به محتوا دسترسی ندارد. بنابراین، غیر مجاز است و سرور از ارائه منبع درخواستی خودداری می کند. برخلاف ۴۰۱ Unauthorized، سرور هویت مشتری را می داند.
۴۰۴ Not Found
: سرور نمی تواند منبع درخواستی را پیدا کند. در مرورگر، این نشان می دهد که URL شناسایی نمی شود. در یک API، این همچنین می تواند نشان دهد که نقطه پایانی معتبر است اما منبع وجود ندارد. سرورها همچنین ممکن است از این پاسخ به جای ۴۰۳ Forbidden برای پنهان کردن وجود یک منبع از یک کلاینت غیرمجاز استفاده کنند. این کد پاسخ احتمالاً شناخته شده ترین است زیرا اغلب در وب ظاهر می شود.
۴۰۵ Method Not Allowed
: سرور روش درخواست را تشخیص می دهد، اما توسط منبع هدف پشتیبانی نمی شود. به عنوان مثال، یک API ممکن است به شما اجازه حذف یک منبع را با استفاده از دستور DELETE ندهد.
۴۰۶ Not Acceptable
: این پاسخ زمانی ارائه می شود که وب سرور، پس از انجام مذاکره محتوای سرور محور، محتوایی را که با معیارهای عامل کاربر مطابقت داشته باشد، پیدا نمی کند.
۴۰۷ Proxy Authentication Required
: این شبیه به ۴۰۱ Unauthorized است، اما احراز هویت باید از طریق یک پروکسی انجام شود.
۴۰۸ Request Timeout
: برخی از سرورها این پاسخ را از طریق یک اتصال بیکار ارسال می کنند، حتی اگر مشتری قبلاً آن را درخواست نکرده باشد. این نشان می دهد که سرور می خواهد این اتصال استفاده نشده را خاتمه دهد. این پاسخ به طور قابل توجهی بیشتر مورد استفاده قرار می گیرد زیرا چندین مرورگر مانند Chrome، Firefox 27+، و IE9 از روش های پیش اتصال HTTP برای سرعت بخشیدن به مرور استفاده می کنند.
۴۰۹ Conflict
: این پاسخ زمانی ارسال می شود که درخواستی با وضعیت فعلی سرور مخالف باشد.
۴۱۰ Gone
: این پاسخ زمانی داده میشود که محتوای درخواستی بهطور دائم از سرور پاک شده باشد و فاقد آدرس ارسال باشد. از مشتریان انتظار می رود حافظه پنهان و اتصالات به منبع را پاک کنند. پروتکل HTTP مشخص می کند که این کد وضعیت باید برای “سرویس های تبلیغاتی با زمان محدود” استفاده شود. API ها نباید خود را موظف به نمایش منابعی که با این کد وضعیت حذف شده اند احساس کنند.
۴۱۱ Length Required
: سرور درخواست را رد کرد زیرا قسمت سرصفحه Content-Length ارائه نشده بود که سرور به آن نیاز دارد.
۴۱۲ Precondition Failed
: کلاینت پیش شرط هایی را در سرصفحه های خود مشخص کرده است که سرور آنها را برآورده نمی کند.
۴۱۳ Payload Too Large
: موجودیت درخواست از محدودیت های تعیین شده توسط سرور فراتر می رود. سرور ممکن است اتصال را پایان دهد یا فیلد سرصفحه Retry-After را برگرداند.
۴۱۴ URI Too Long
: مشتری یک URI درخواست کرده است که طولانی تر از آن است که سرور آماده تفسیر باشد.
۴۱۵ Unsupported Media Type
: سرور فرمت رسانه داده های درخواستی را نمی پذیرد، بنابراین درخواست رد می شود.
۴۱۶ Range Not Satisfiable
: محدوده ارائه شده توسط فیلد هدر Range در درخواست قابل برآورده نیست. این امکان وجود دارد که محدوده از اندازه داده های URI مقصد بیشتر باشد.
۴۱۷ Expectation Failed
: این کد پاسخ نشان می دهد که سرور نمی تواند انتظارات مشخص شده در قسمت سرصفحه درخواست انتظار را برآورده کند.
۴۱۸ I'm a teapot
: سرور درخواست دم کردن قهوه با قوری را رد می کند.
۴۲۱ Misdirected Request
: درخواست به سروری ارسال شد که نمی تواند پاسخی را برگرداند. این می تواند توسط سروری صادر شود که برای پاسخ به ترکیبات طرح و اختیار مشخص شده در URI درخواست پیکربندی نشده است.
۴۲۲ Unprocessable Content
: این درخواست به خوبی شکل گرفته بود، اما به دلیل نقص های معنایی نمی توان آن را انجام داد.
۴۲۳ Locked
: منبع مورد دسترسی قفل شده است.
۴۲۴ Failed Dependency
: این درخواست به دلیل عدم موفقیت درخواست قبلی انجام نشد.
۴۲۵ Too Early
: این نشان می دهد که سرور در اجرای درخواستی که ممکن است دوباره پخش شود مردد است.
۴۲۶ Upgrade Required
: سرور از پردازش درخواست با استفاده از پروتکل فعلی امتناع می ورزد اما ممکن است در صورت ارتقاء مشتری به پروتکل دیگری مایل به انجام این کار باشد. برای تعیین پروتکل(های) مورد نیاز، سرور شامل یک عنوان ارتقاء در پاسخ ۴۲۶ می باشد.
۴۲۸ Precondition Required
: سرور مبدا نیاز دارد که درخواست مشروط باشد. این پاسخ برای جلوگیری از وضعیت «بهروزرسانی از دست رفته» است، که در آن یک کلاینت وضعیت یک منبع را دریافت میکند، آن را تغییر میدهد و آن را به سرور برمیگرداند در حالی که شخص ثالث وضعیت را در سرور تغییر میدهد و منجر به تضاد میشود.
۴۲۹ Too Many Requests
: کاربر در یک بازه زمانی معین درخواست های زیادی ارسال کرد (“محدود کردن نرخ”).
۴۳۱ Request Header Fields Too Large
: سرور از رسیدگی به درخواست خودداری می کند زیرا فیلدهای سرصفحه بسیار بزرگ هستند. پس از کاهش مقدار فیلدهای سرصفحه درخواست، می توان درخواست را دوباره ارسال کرد.
۴۵۱ Unavailable For Legal Reasons
: عامل کاربر منبعی را درخواست کرد که از نظر قانونی قابل ارائه نبود، مانند یک صفحه وب سانسور شده توسط دولت.
ارورهای Server error responses
۵۰۰ Internal Server Error
: سرور با سناریویی روبرو شده است که مطمئن نیست چگونه آن را مدیریت کند.
۵۰۱ Not Implemented
: سرور از روش درخواستی پشتیبانی نمی کند و نمی تواند آن را مدیریت کند. سرورها فقط باید دو روش ارائه دهند: GET و HEAD که نباید این کد را برگردانند.
۵۰۲ Bad Gateway
: این پاسخ خطا نشان می دهد که سرور در حالی که به عنوان دروازه ای برای دریافت پاسخ مورد نیاز برای رسیدگی به درخواست عمل می کند، پاسخ نادرستی دریافت کرده است.
۵۰۳ Service Unavailable
: سرور برای پردازش درخواست آماده نیست. دلایل رایج شامل سروری است که به دلیل تعمیر و نگهداری از کار افتاده یا بارگذاری بیش از حد دارد. توجه به این نکته حائز اهمیت است که این پاسخ باید با یک وب سایت کاربر پسند همراه باشد که وضعیت را تشریح کند. این پاسخ باید برای مشکلات موقت استفاده شود، و هدر Retry-After HTTP باید در صورت امکان، زمان پیشبینیشده برای بازیابی سرویس را شامل شود.
۵۰۴ Gateway Timeout
: این پاسخ خطا زمانی برمیگردد که سرور بهعنوان یک دروازه کار میکند و پاسخی را به موقع دریافت نمیکند.
۵۰۵ HTTP Version Not Supported
: نسخه HTTP مشخص شده در درخواست توسط سرور پشتیبانی نمی شود.
۵۰۶ Variant Also Negotiates
: سرور دارای یک خطای پیکربندی داخلی است: منبع نوع انتخابی تنظیم شده است تا در مذاکره محتوای شفاف شرکت کند، بنابراین نقطه پایان مناسبی در فرآیند مذاکره نیست.
۵۰۷ Insufficient Storage
: این روش را نمی توان در منبع اعمال کرد زیرا سرور قادر به ذخیره نمایش مورد نیاز برای تکمیل صحیح درخواست نبود.
۵۰۸ Loop Detected
: سرور در حین پردازش درخواست، یک حلقه بی نهایت را شناسایی کرد.
۵۱۰ Not Extended
: پسوندهای اضافی برای درخواست برای سرور برای انجام آن مورد نیاز است.
۵۱۱ Network Authentication Required
: این نشان می دهد که مشتری باید قبل از دسترسی به شبکه احراز هویت کند.