در دنیای توسعه وب، کدهای خطای HTTP نقشی حیاتی در تأثیرگذاری بر تجربه کاربر و شهرت یک وب سایت دارند. در این مقاله، لیست کاملی از کدهای خطای سرور را در نظر می گیریم، معانی آنها را تجزیه و تحلیل می کنیم و یاد می گیریم که چگونه به طور موثر کدهای پاسخ سرور را برای حل مشکلات و بهینه سازی عملکرد برنامه های وب تفسیر کنیم.
کد پاسخ HTTP چیست؟
کد پاسخ HTTP زبان سرورهای وب است که درخواست های مرورگر را به دستورالعمل های قابل فهم ترجمه می کند. مانند شاعری است که به سوالات مجازی پاسخ می دهد و به آنها معنا و جهت می دهد. کدهای پاسخ همیشه کدهای خطای HTTP نیستند. به عنوان مثال، "200 OK" به این معنی است که همه چیز درست است، اما خطای HTTP "404 Not Found" به این معنی است که صفحه در فضای مجازی گم می شود. هر کد یک بیان منحصر به فرد از حالت سرور است که رمزگشایی آن به ما امکان می دهد آنچه را که در طرف دیگر دنیای مجازی اتفاق می افتد درک کنیم.
کدهای 1xx (اطلاعات)
کدهای وضعیت 1xx در پروتکل HTTP نوعی اولین پیوند در گفتگوی بین سرور و مشتری هستند. آنها به جای ارائه پاسخ کامل به یک درخواست، اطلاعاتی در مورد وضعیت فعلی ارائه می دهند و تبادل داده ها را کارآمدتر می کنند. بیایید نگاهی دقیق تر به آنها بیندازیم:
۱۰۰ ادامه . کد پاسخ HTTP که در آن سرور به کاربر چراغ سبز نشان میدهد و به او اجازه میدهد تا با خیال راحت به ارسال یک درخواست بزرگ ادامه دهد.
۱۰۱ پروتکلهای سوئیچینگ . سرور به کلاینت میگوید که در حال تغییر قوانین بازی است، برای مثال، از HTTP به HTTPS که امنتر است، منتقل میشود. در این حالت، از هدر «ارتقاء» برای تغییر پروتکل استفاده میشود.
۱۰۲ در حال پردازش . این کد مانند پیامی است که سرور درخواست را پذیرفته است، اما هنوز مشغول انجام یک عملیات پیچیده است.
۱۰۳ نکات اولیه . در اینجا سرور قبل از پاسخ اصلی، چندین هدر هشدار دهنده به کلاینت ارسال میکند و در مورد چیزی که ممکن است در آینده نزدیک مرتبط باشد، هشدار میدهد.
کد 2xx (موفق)
کدهای خطای HTTP در گروه 2xx نشان دهنده درخواست موفقیت آمیز سرور است. آنها اساساً به عنوان "چراغ سبز" در حوزه ارتباطات وب عمل می کنند و تأیید می کنند که همه چیز طبق برنامه پیش می رود و با موفقیت به پایان رسیده است.
۲۰۰ OK . این وضعیت زمانی استفاده میشود که سرور درخواستی را با روش GET بدون مشکل پردازش کرده و دادههای درخواستی را در پاسخ برمیگرداند. هدر "Content-Type" نوع محتوا را در پاسخ گزارش میدهد. این هدر فقط به کلاینت اطلاع میدهد که درخواست موفقیتآمیز بوده است.
201 - ایجاد شد . در اینجا سرور ایجاد یک منبع جدید را اعلام میکند.
۲۰۲ پذیرفته شد . سرور به کاربر اطلاع میدهد که درخواست پذیرفته شده است، اما برای پاسخ به آن زمان لازم است.
۲۰۳ اطلاعات غیرمعتبر . این کد دادههایی را در اختیار کلاینت قرار میدهد که ممکن است رسمی نباشند، اما میتوانند برای مقایسه استفاده شوند.
204 بدون محتوا . سرور درخواست را پردازش کرده است اما هیچ محتوای اضافی را برنمیگرداند.
205 بازنشانی محتوا . در اینجا به کلاینت دستور داده میشود که پس از ارسال، نمای فعلی یا دادهها را بازنشانی کند.
۲۰۶ محتوای جزئی . این حالت نشان میدهد که پاسخ فقط شامل بخشی از محتوای درخواستی است. عنوان "محدوده محتوا" محدوده محتوای جزئی را نشان میدهد.
207 چندوضعیتی. سرور با موفقیت یک درخواست چندعملیاتی از کلاینت را تکمیل کرده است و پاسخ حاوی اطلاعاتی در مورد وضعیت هر یک از عملیات است.
۲۲۶ IM Used . این کد نشان میدهد که سرور از روش Incremental Metadata (IM) استفاده کرده و فقط با ارسال بخشهای اصلاحشدهی منبع به کلاینت پاسخ داده است.
کدهای 3xx (تغییر مسیرها)
کدهای 3xx در پروتکل HTTP مانند نشانگرهایی هستند که کاربر را به محل منبع جدید هدایت می کنند. آنها به مشتری اطلاع می دهند که برای به دست آوردن محتوای درخواستی یا هدایت به منبع دیگری باید مراحل بعدی انجام شود. بیایید در جزئیات هر یک از آنها غوطه ور شویم:
۳۰۰ انتخاب چندگانه . کلاینت سیگنالی دریافت میکند مبنی بر اینکه چندین مکان ممکن برای منبع وجود دارد و در پاسخ به او یک انتخاب داده میشود. در شرایط فعلی، عنوان «مکان» ممکن است گزینههای جایگزین برای منبع را نشان دهد.
301 (انتقال دائمی). سرور به کاربر گزارش میدهد که منبع به طور دائم به مکان دیگری منتقل شده است.
302 یافت شد . این کد HTTP مشابه یک تغییر مسیر موقت است. سرور به مصرفکننده اطلاع میدهد که منبع به طور موقت در یک URL متفاوت در دسترس است. هدر "مکان" به URL جدید برای تغییر مسیر موقت اشاره میکند.
303 See Other . به کلاینت گفته میشود که منبع در URL دیگری در دسترس است و باید یک درخواست GET به این آدرس جدید ارسال کند.
304 - عدم تغییر (Not Modified) . این وضعیت به کلاینت میگوید که منبع از آخرین درخواست بدون تغییر باقی مانده و نیازی به دانلود مجدد ندارد. هنگام ارسال درخواست، از هدر "If-Modified-Since" برای بررسی تغییر منبع استفاده میشود.
305 استفاده از پروکسی. به عنوان پاسخ، سرور گزارش میدهد که باید از پروکسی مشخص شده برای دسترسی به منبع درخواستی استفاده کند.
۳۰۶ (رزرو شده) — کد رزرو شده است، اما در واقع استفاده نمیشود.
307 تغییر مسیر موقت . این کد مشابه 302 Found است، اما از کاربر میخواهد که در روش درخواستی که در درخواست اصلی استفاده شده است، باقی بماند.
308 تغییر مسیر دائمی . نشان میدهد که منبع به طور دائمی به یک URI جدید منتقل شده است و کلاینت باید از URI جدید برای همه درخواستهای آینده استفاده کند.
خطای HTTP 4xx (خطاهای مشتری)
کدهای خطای HTTP 4xx نشان دهنده خطاهای مشتری است. این بدان معنی است که مشکل در سمت کاربر است، مانند مرورگر وب یا برنامه.
۴۰۰ درخواست نامناسب . سرور به دلیل خطاهای نحوی، دادههای نامعتبر یا سایر خطاها در سمت کلاینت، نمیتواند درخواست را پردازش کند.
۴۰۱ غیرمجاز. سرور به دلیل خطاهای نحوی، دادههای نامعتبر یا سایر خطاها در سمت کلاینت، نمیتواند درخواست را پردازش کند.
۴۰۲ - پرداخت الزامی است . این کد در حال حاضر فعال نیست و برای استفادههای بعدی رزرو شده است. این کد ممکن است نشاندهنده نیاز به پرداخت قبل از دسترسی به منبع در آینده باشد.
خطای HTTP 403 ممنوع. کلاینت دسترسی کافی برای دسترسی به منبع درخواستی را ندارد.
۴۰۴ یافت نشد. منبع درخواستی در سرور وجود ندارد. این یکی از رایجترین خطاهای کاربر است.
کد ۴۰۵: متد مجاز نیست . سرور از متد درخواست مشخص شده در این منبع پشتیبانی نمیکند. هدر «Allow» متدهای مجاز برای منبع را نشان میدهد. با این کد،
۴۰۶ (غیرقابل قبول). سرور نمیتواند دادهها را در قالبی که توسط کلاینت پذیرفته شود، ارائه دهد.
۴۰۷ - احراز هویت پروکسی الزامی است . برای دسترسی به منبع درخواستی، احراز هویت در سرور پروکسی الزامی است.
۴۰۸ مهلت درخواست . سرور منتظر دریافت درخواست از کلاینت بوده، اما مهلت آن تمام شده است. هدر «Retry-After» ممکن است زمانی را نشان دهد که پس از آن میتوان درخواست را دوباره امتحان کرد.
۴۰۹ تداخل. درخواست به دلیل تداخل با وضعیت فعلی منبع، قابل تکمیل نیست.
۴۱۰ Gone . منبع درخواستی قبلاً وجود داشته اما اکنون حذف شده است و بازیابی آن انتظار نمیرود.
۴۱۱ (طول مورد نیاز) . سرور از شما میخواهد که طول محتوا را در درخواست مشخص کنید؛ عدم وجود این اطلاعات خطا محسوب میشود.
۴۱۲: پیششرط ناموفق بود . پیششرط درخواست برآورده نشده است و این مانع از اجرای آن میشود.
۴۱۳: حجم درخواست بیش از حد بزرگ است . حجم دادههای درخواستی از محدودیتهای سرور فراتر رفته است.
۴۱۴ آدرس اینترنتی (URI) خیلی طولانی است . طول آدرس اینترنتی (URI) در درخواست از حد مجاز فراتر رفته است.
۴۱۵ نوع رسانه پشتیبانی نمیشود . سرور نمیتواند نوع داده ارائه شده در درخواست را پردازش کند.
۴۱۶: محدوده مورد نظر رضایتبخش نیست . خطای HTTP که در آن محدوده درخواستی با دادههای فعلی سرور مطابقت ندارد.
۴۱۷ انتظار ناموفق بود . شرط مورد انتظار در سرآیند "انتظار" برآورده نشد.
۴۱۸ من یک قوری هستم . این کد به عنوان یک شوخی درج شده است و هیچ اقدام واقعی برای کاربر یا سرور را نشان نمیدهد و یک خطای تمام عیار نیست. این نشان میدهد که سرور یک قوری است و قادر به درست کردن قهوه نیست.
۴۲۱ درخواست اشتباه . سرور به دلیل خطایی در درخواست یا پیکربندی سرور، درخواست را پردازش نمیکند.
۴۲۲ موجودیت غیرقابل پردازش . سرور درخواست را درک میکند، اما به دلیل خطاهای دادهای آن را پردازش نمیکند.
۴۲۳ قفل شده است. منبع مسدود شده و قابل پردازش نیست.
۴۲۴: وابستگی ناموفق . درخواست به یک درخواست اجرا نشده دیگر وابسته است.
۴۲۵ خیلی زود. سرور به دلیل ارسال زودهنگام درخواست، آماده پردازش آن نیست.
۴۲۶ (نیاز به ارتقا) . سرور برای پردازش درخواست به استفاده از پروتکل پیشرفتهتری نیاز دارد.
۴۲۸ (الزامی بودن پیششرط) . سرور نیاز به ذکر پیششرطهای خاصی در درخواست دارد.
۴۲۹ درخواستهای بیش از حد . کلاینت در مدت زمان کوتاهی درخواستهای بسیار زیادی ارسال کرده است که از محدودیتهای سرور فراتر رفته است.
۴۳۱ فیلدهای سربرگ درخواست خیلی بزرگ هستند . سربرگهای درخواست از حداکثر اندازه مجاز تجاوز میکنند.
۴۴۹ تلاش مجدد با. نشان میدهد که درخواست نمیتواند توسط سرور فعلی اجرا شود، اما میتواند با موفقیت توسط سرور دیگری پردازش شود و کلاینت باید درخواست را با یک URI جدید دوباره امتحان کند.
۴۵۱ به دلایل قانونی در دسترس نیست . منبع به دلایل قانونی در دسترس نیست.
۴۹۹ درخواست بسته شده توسط کلاینت . سرور درخواست را دریافت کرد، اما اتصال قبل از اتمام پردازش توسط کلاینت بسته شد.
خطای HTTP 5xx (خطاهای سرور)
کدهای خطای HTTP 5xx نشان دهنده مشکلات سرور است. این کدها نشان دهنده مشکلاتی است که در سمت سرور رخ داده است و باعث می شود سرور نتواند درخواست کاربر را به روش صحیح پردازش کند. بیایید نگاهی دقیق تر به آنها بیندازیم:
خطای HTTP 500 خطای داخلی سرور . سرور با شرایط غیرمنتظرهای مواجه میشود که مانع از تکمیل درخواست میشود. عنوان "Server" ممکن است سروری را که خطا در آن رخ داده است، نشان دهد.
۵۰۱ پیادهسازی نشده است . سرور از قابلیتهای مورد نیاز برای پردازش درخواست کلاینت پشتیبانی نمیکند. هدر "Via" ممکن است نشاندهنده سرور پروکسی باشد که خطا از طریق آن رخ داده است.
۵۰۲ خطای دروازه خراب . این کد به این معنی است که سروری که به عنوان پروکسی عمل میکند، پاسخ نادرستی از سرور دیگری دریافت کرده است.
خطای HTTP 503 سرویس در دسترس نیست . سرور موقتاً قادر به پردازش درخواستها نیست.
۵۰۴ Gateway Timeout . سروری که به عنوان پروکسی عمل میکند، پاسخی به موقع از سرور دیگری دریافت نکرده است.
۵۰۵ نسخه HTTP پشتیبانی نمیشود . سرور از نسخه پروتکل HTTP مشخص شده در درخواست پشتیبانی نمیکند. به عنوان یک گزینه پشتیبان، هدر "ارتقا" ممکن است پروتکلهای پشتیبانی شده را نشان دهد.
۵۰۶ نوع دیگر نیز مذاکره میکند . این وضعیت در HTTP/1.1 استفاده نمیشود؛ با این حال، اگر سرور پیکربندی داخلی را تشخیص دهد که منجر به ابهام در مذاکره محتوا میشود، ممکن است از این پاسخ استفاده کند.
۵۰۷ فضای ذخیرهسازی ناکافی . سرور به دلیل فضای ذخیرهسازی ناکافی نمیتواند درخواست را انجام دهد.
۵۰۸ حلقه شناسایی شد . سرور هنگام پردازش درخواست، حلقهای را شناسایی کرده و برای جلوگیری از ایجاد یک حلقه بینهایت، از تکمیل درخواست خودداری میکند.
۵۰۹: پهنای باند از حد مجاز فراتر رفته است . این خطا زمانی رخ میدهد که پهنای باند سرور به دلیل حجم بالای درخواستها یا ترافیک، از حد مجاز فراتر رفته باشد.
۵۱۰ - تمدید نشده . کلاینت باید برای ادامه درخواست، افزونههای اضافی را منتقل کند.
۵۱۱: احراز هویت شبکه الزامی است . کلاینت برای دسترسی به شبکه باید خود را احراز هویت کند.
نحوه بررسی کد وضعیت صفحه
در این بخش، ما به سه روش اصلی برای بررسی کد وضعیت صفحه توجه خواهیم کرد: از طریق خط فرمان، استفاده از یک مرورگر وب، و استفاده از خدمات آنلاین مستقل. هر کدام از این روش ها مزایای خاص خود را دارند و می توانند در شرایط مختلف مفید باشند.
بررسی پاسخ سرور از طریق خط فرمان
خط فرمان روشی مناسب برای بررسی کد وضعیت صفحه بدون نیاز به استفاده از مرورگر وب فراهم می کند. برای این روش باید خط فرمان را باز کنید و از دستور زیر استفاده کنید:
curl -I http://page-address
این دستور یک درخواست HEAD (فقط درخواست سرصفحه ها) را به URL مشخص شده ارسال می کند و اطلاعاتی از جمله کد وضعیت HTTP را نمایش می دهد:
مثال بالا یک کد پاسخ موفق را نشان می دهد. در مورد پاسخی که حاوی کد خطا است، مانند خطای HTTP 404 Not Found، نتیجه مشابه خواهد بود:
بررسی پاسخ سرور از طریق کنسول مرورگر
کنسول توسعه دهنده مرورگر وب ابزارهایی را برای انجام عملیات های مختلف از جمله بررسی کد وضعیت صفحه ارائه می دهد. برای مشاهده کد HTTP در پاسخ سرور، باید کنسول توسعه دهنده (Ctrl+Shift+K) یا (Ctrl+shift+J) را بسته به مرورگر مورد استفاده باز کنید. بعد، بخش "شبکه" را انتخاب کنید و صفحه مورد نظر را بارگیری کنید:
بررسی پاسخ سرور با استفاده از ابزارهای مستقل
تعداد زیادی سرویس آنلاین مستقل وجود دارد که ابزارهایی برای بررسی کد وضعیت صفحه وبسایت ارائه میدهند. این سرویسها معمولاً به شما این امکان را میدهند که به سرعت یک نمای کلی از در دسترس بودن و عملکرد منبع خود دریافت کنید. همه آنها با استفاده از یک اصل کار میکنند. به عنوان مثال، ما محبوبترین منبع - httpstatus.io - را در نظر خواهیم گرفت.
اول از همه، شما باید خود سرویس را باز کنید، سپس آدرس صفحه ای را که باید پاسخ دهید را وارد کنید و درخواست تأیید کنید:
نتیجه در پایین صفحه نمایش داده می شود:
نتیجه
در پایان، باید تاکید کرد که درک و خواندن کدهای خطای HTTP یک مهارت کلیدی برای هر کسی است که در توسعه وب و نگهداری سرور فعالیت دارد. همانطور که هر خطا را کشف می کنیم و ابزارهای شناسایی آنها را بررسی می کنیم، دلایلی را می بینیم که چرا مدیریت موثر این جنبه های خدمات وب بسیار مهم است.