آشنایی با خطاهای رایجی که در سایت‌ها میبینیم!

زمانی که در وب در حال گشت و گذار و مرور صفحات مختلف وب هستیم، کدهایی در پس زمینه بین واسط کاربری ما (مرورگر) و سرور رد و بدل می‌شوند که به آنها در اصطلاح کدهای وضعیت HTTP یا (HTTP response status codes) می‌گویند.
کدهای وضعیت HTTP مانند خطاهای ۴۰۴، ۳۰۱ و ۵۰۰ شاید برای یک کاربر معمولی چندان معنایی نداشته باشند، اما برای سئوکاران بسیار مهم هستند. وظیفه رفع این خطاها اکثرا بر عهده برنامه نویس می‌باشد. از آنجایی که ربات‌های موتورهای جستجو مانند ربات گوگل، از این کدها در ارزیابی سلامت یک سایت استفاده می کنند، خوب است که همیشه برنامه‌ نویس ها نسبت به سلامت سایتشان توجه کافی داشته باشند.

این کدها توسط کنسرسیوم‌ها و بنیادهای جهانی استاندارد سازی وب از جمله IETF یا (Internet Engineering Task Force) و W3C یا (World Wide Web Consortium) تعریف و سازمان دهی شده‌اند و امروزه تقریبا سرور یا مرورگری وجود ندارد که از اصول آنها پیروی نکند.

شاید تا به حال با وارد کردن نام یک وب سایت و یا رفتن به صفحه‌ای از یک وب با خطایی روبه‌رو شده باشید که از شایع‌ترین آنها می‌توان به خطای ۴۰۴ اشاره کرد. کدهای وضعیت HTTP چه به لحاظ فنی و چه به لحاظ کاربری، کاربردهای فراوانی دارند و لذا آشنایی با جزئیات و مفاهیم آنها می‌تواند به میزان زیادی به توسعه دانش و اطلاعات عمومی وب، کمک کند.

البته به این نکته هم اشاره کنیم که در IIS مایکروسافت ممکن است این خطاها با عددی اعشاری در کنار آن نمایش داده شود، این تنها به این دلیل است که مایکروسافت خطاهای رخ داده را با جزئیات بیشتری به سمع و نظر کاربران می‌رساند.

چگونه خطاهای وضعیت HTTP را بررسی کنیم؟

برای این مورد می‌توانید از قابلیت‌های مرورگر برای توسعه‌دهندگان وب (Web Developers) استفاده کنید، معمولا در مرورگرهایی مثل فایر فاکس، گوگل کروم و... قسمتی تحت عنوان ابزارهای توسعه‌دهندگان (Developers Tools) یا عناوینی شبیه آن وجود دارد که تمام فعل و انفعالات واسط کاربری (User Agent) و سرور را نشان می‌دهد. نکته قابل توجه برای علاقه‌مندان این است که برای شروع فعالیت در این حوزه، باید با مفاهیم و دانش پایه برنامه نویسی آشنایی داشته باشند.

بریم با لیست کدهای وضعیت HTTP آشنا شویم :

قبل از شروع اشاره کنیم به اینکه، هر وب سرور درخواست هایی را که دریافت می‌کند را با یک کد وضعیت خاص پاسخ دهی می‌نماید. هر کد وضعیت HTTP از ۳ عدد تشکیل شده و به صورت کلی به ۵ گروه مختلف تقسیم می‌شود.

اولین رقم آنها نمایان گر گروه و یا کلاس آنها می‌باشد که برای شناسایی یا تعریف کد مورد نظر در یک دسته‌بندی خاص استفاده می‌شود که یکی از پنج حالت زیر است:

  • سری 1XX: به این معنی که درخواست، پذیرفته شده است یا فرآیند همچنان ادامه دارد.
  • سری 2XX: تایید می‌کند که عمل با موفقیت انجام شد و یا با موفقیت دریافت شد. همانند کد ۲۰۰
  • سری 3XX: راهنمایی مجدد یا هدایت لازم دارد، برای تکمیل درخواست خود، به چیز دیگری نیاز دارد. همانند ریدایرکت ۳۰۱
  • سری 4XX: خطای سرویس‌گیرنده (سمت کاربر) که نشان می‌دهد درخواست قابلیت تکمیل ندارد یا اینکه کاربر چیزی را نادرست وارد می‌کند.
  • سری 5XX: خطای سرویس‌دهنده (سمت سرور) که حاکی از ناتوانی سرور در تکمیل یا انجام درخواستی است که ظاهراَ معتبر بوده است.

حال با توجه به آشنایی به سری‌های مختلف می‌توان به راحتی حدس زد که اگر خطایی با پیش شماره ۴ رخ داد، مربوط به خطایی است که از سمت کاربر رخ داده و یا اگر خطایی مانند ۵۰۳ رخ داد ، شما متوجه خواهید شد این خطا مربوط به سرور است.

کدهای سری ۱۰۰، مربوط به اطلاعات (Informational)

اولین سری از کدهای HTTP، با عدد ۱۰۰ شروع می‌شود که در مورد نقل و انتقال بسته‌های اطلاعات مثل ارسال و دریافت فایل، کاربرد دارند و حالت موقت پاسخ سرور را نشان می‌دهند، به فرض وقتی از متد POST در فرم های وب استفاده می‌کنیم، دریافت کد ۱۰۰ به معنی این است که سرور درخواست ما را پذیرفته و فرآیند پردازش اطلاعات ادامه دارد، البته بدون ارسال کد ۱۰۰ نیز این فرآیند ادامه می یابد لذا ارسال آن از طرف سرور ضروری نیست.

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

کاربر به سرور درخواست تغییر پروتکل را داده و سرور در حال تأیید این درخواست می‌باشد. در برنامه‌هایی که از آژاکس (Ajax) استفاده می‌کنند، این کد می‌تواند کاربرد داشته باشد.

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

وقتی سرور در حال پردازش‌ درخواست‌های کاربر باشد، این وضعیت نمایش داده خواهد شد. از سرور با ارسال کد ۱۰۲ به مرورگر می‌گوید که عملیات درخواستی، دریافت شده و در حال پردازش است.

کد 103: ایست بازرسی (Early Hints)

این کد زمانی رخ می‌دهد که سرور در حال بازخوانی درخواست کاربر برای استفاده از متد PUT یا POST و حذف درخواست اضافی می‌باشد. این کدها، عموماً در معرض نمایش کاربران نیستند و سرورها با این کدها با سیستم کاربر صحبت کرده تا ارتباط حفظ شود و درخواست‌ها به درستی ارسال و دریافت گردد.

کدهای سری ۲۰۰: درخواست موفق (Success) مهم برای سئو

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

کد استاندارد HTTP در وب، با عدد ۲۰۰ نشان داده می‌شود، دریافت پاسخ ۲۰۰ از سرور به این معنی است که آدرس درخواستی (در متد GET) یا عملیات مورد نظر (در متد POST) به طور کامل و موفقیت آمیز توسط سرور انجام شده است، در یک ارتباط بدون نقص بین واسط کاربری (user agent) و سرور، کدهای سری ۲۰۰ باید دریافت شوند.

کد 201: ساخته شده (Created)

درخواست ارسالی موفقیت آمیز بوده و سرور برای ارسال درخواست یک منبع جدید ایجاد کرده است. ارسال کد ۲۰۱ تنها در صورتی صحیح است که سرور منبع جدید را ساخته باشد، در غیر اینصورت (اگر منبع هنوز ساخته نشده باشد) باید کد ۲۰۲ را ارسال کند.

کد 202: موافقت شده (Accepted)

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

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

سرور درخواست موافقت شده را پردازش کرده است ولی اطلاعات ارسالی (در پاسخ سرور) از یک منبع غیر معتبر است (به فرض کپی ازاطلاعاتی است که درستی آن تایید نمی شود)، تنظیم این کد در سرورها معمولا غیر ضروری است و می‌توان به جای آن کد ۲۰۰ را ارسال کرد.

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

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

کد 205: بازنشانی محتوا (Reset Content)

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

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

درخواست با موفقیت پردازش شده ولی سرور محتوا جزئی را نمایش خواهد داد. از این کد برای حالت‌هایی که به فرض از امکاناتی نظیر ادامه دانلود (resume download) استفاده می‌کنیم، کاربرد دارد، با ارسال این کد توسط سرور، به قسمت خاصی از درخواست واسط کاربری به صورت جزئی پاسخ داده می‌شود.

کدهای سری 300: انتقال (Redirection)

‌کدهای سری ۳۰۰ مربوط به مواردی هستند که پاسخ به درخواست واسط کاربری از سرور، باید با انجام اعمال دیگری (در سمت کاربر) کامل شود، این عملیات معمولا توسط واسط کاربری (مثلا مرورگر) و بدون دخالت کاربر (به صورت خودکار) انجام می‌شود، به فرض عمل ریدایرکت یا انتقال خودکار از یک آدرس به آدرس دیگر، با ارسال کدهای سری ۳۰۰ انجام می‌شود، نکته مهم در اینجا این مسئله است که ریدایرکت‌ها نباید در یک درخواست، بیش از ۵ بار تکرار شوند، در غیر این‌صورت در اکثر مرورگرها، فرض بر حلقه (Loop) بی‌انتها شده و ارتباط قطع خواهد شد.

کد 300: انتخاب چندگانه (Multiple Choices) مهم برای سئو

سرور لیستی از لینک‌ها را نمایش داده و کاربر می‌تواند آنها را انتخاب کرده و به آن مکان برود. کد ۳۰۰ برای مواقعی است که سرور در پاسخ به درخواست واسط کاربری، چند منبع مختلف را پیشنهاد می‌دهد (مثلا یک فایل با فرمت های مختلف) و انتخاب یک URL را به عهده مرورگر کاربر می‌گذارد، عمل انتخاب نیز معمولا یا به صورت خودکار انجام می‌شود یا اینکه سرور یکی از URLها را به عنوان پیش فرض برگزیده و همراه پاسخ خود ارسال می کند.

کد 301: انتقال همیشگی (Moved Permanently)

کد ۳۰۱ یکی از مهم‌ترین و حساس‌ترین کدهای HTTP مخصوصا در علم سئو است، دریافت این کد از طرف سرور، به معنی انتقال همیشگی یک آدرس وب، به آدرسی دیگر است، از این کد مخصوصا هنگامی که در آدرس لینک‌های سایت، به هر دلیل تغییراتی ایجاد می‌شود، می‌توان جهت هدایت ربات‌های خزنده یا کاربران به لینک اصلی، استفاده کرد.

کد 302: پیدا شد (Found) مهم برای سئو

درخواست صفحه مورد نظر شما به صورت موقت به صفحه جدیدی ریدایرکت خواهد شد. این حالت با کد ۳۰۱ متفاوت است، در اینجا انتقال به صورت موقت انجام شده و آدرس اصلی همچنان معتبر و در دسترس خواهد بود، اما در ریدایرکت ۳۰۱، منظور از انتقال، انتقال همیشگی، حذف آدرس فعلی و جایگزینی آن با آدرس جدید است.

کد 303: دیدن منبعی دیگر (See Other)

این خطا در هنگامی رخ می‌دهد که کاربر باید برای دریافت درخواست خود به محل دیگری مراجعه کند. این کد مشابه کد ۳۰۲ عمل می‌کند، تفاوت در اینجا، تاکید روی متد GET است، در کد ۳۰۳ آدرس فعلی و آدرسی که کاربر به آن منتقل می‌شود، باید از طریق متد GET درخواست شوند که در حالت معمول نیز به اینصورت خواهد بود.

کد 304: بدون تغییر (Not Modified)

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

کد 305: استفاده از پروکسی (Use Proxy)

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

کد 306: تعویض پروکسی (Switch Proxy)

کد ۳۰۶ هم مشابه کد ۳۰۵ است و مربوط به درخواست تغییر پروکسی، این کد در حال حاضر کاربردی ندارد.

کد 307: انتقال موقت (Temporary Redirect) مهم برای سئو

همانند کد ۳۰۲ عمل کرده اما نوع ریدایرکت موقت آن کمی متفاوت خواهد بود. این حالت با ریدایرکت ۳۰۲ و ۳۰۳ فرق دارد، در اینجا انتقال نیاز به تایید کاربر داشته و به صورت خودکار انجام نمی‌شود، متدهای استفاده شده نیز باید بین لینک اصلی و لینک انتقالی مشترک باشد، بقیه شرایط مشابه کدهای ۳۰۲ و ۳۰۳ است و واسط کاربری باید لینک فعلی را همچنان و در مراجعات بعدی به عنوان لینک اصلی مد نظر قرار دهد.

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

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

ارور 400: درخواست بد (Error 400: Bad Request)

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

ارور 401: دسترسی نا معتبر (Error 401: Unauthorized)

خطای ۴۰۱ به دلیل درخواست ارسالی غیر مجاز است. در این حالت ممکن است نیاز با لاگین باشد. در این حالت منبع درخواستی به طور کامل محدود نشده است، بلکه درخواست کاربر نیاز به تایید مجوزهای دسترسی (به طور معمول نام کاربری و کلمه عبور) دارد، به همین دلیل سرور در پاسخ خود یک فرم از نوع WWW-Authenticate را ارسال کرده و از کاربر می‌خواهد تا اعتبار خود را اثبات کند.

ارور 402: نیاز به پرداخت (Error 402: Payment Required)

خطای ۴۰۲ نماینگر استفاده از بخشی است که کاربر باید هزینه پرداخت نماید و پس از پرداخت این بخش باز خواهد شد. هدف از تعریف آن مربوط به حساب‌های کاربری است که نیاز به پرداخت وجه دارند، البته در عمل تا کنون چنین اتفاقی رخ نداده است و از کد ۴۰۲ استفاده چندانی نمی‌شود.

ارور 403: دسترسی غیر مجاز (Error 403: Forbidden) مهم برای سئو

خطای ۴۰۳ (Forbidden: Access is denied) می‌گوید استفاده از این صفحه برای کاربر ممنوع می‌باشد. به طورمثال اگر سایتی کاربران یک بخش یا یک کشور را تحریم کرده باشد با این خطا روبه‌رو خواهید شد. این حالت با خطای ۴۰۱ متفاوت است، در اینجا حتی با ورود نام کاربری و کلمه عبور نیز امکان دسترسی مقدور نخواهد بود، معمولا مدیران سایت‌ها، دسترسی مستقیم به فولدرها و نمایش فایل‌ها به صورت لیست را غیر فعال می‌کنند، در نتیجه وقتی آدرس یک فولدر را از آن سرور درخواست می‌کنیم، با خطای ۴۰۳ مواجه خواهیم شد.

برخی دلایلی که باعث بروز این خطای ۴۰۳ می‌شود به شرح ذیل می باشد :

  • عدم ارائه دسترسی صحیح به فایل: بررسی و آگاهی از نام کاربری که به Worker Process وب سایت مربوطه اختصاص داده شده و سپس اطمینان از ارائه مجوزهای لازم (خواندن، نوشتن و یا هردو) به کاربری مذکور برای دسترسی به فایل و یا فلدر مربوطه
  • وجود فایل htaccess. با تنظیمات نادرست: اطمینان از عدم وجود محدودیت دسترسی نادرست در فایل htaccess. (از این فایل می توان به جهت ایجاد محدودیت های دسترسی به منابع خاص استفاده کرد)
  • عدم وجود صفحه پیش فرض: در صورتیکه هیچ صفحه پیش فرضی تعریف و یا وجود نداشته باشد و همچنین قابلیت Directory Browsing نیز فعال نشده باشد، این خطا نمایش داده خواهد شد. برای رفع این مشکل باید یک صفحه پیش فرض تعریف نمود و یا قابلیت Directory Browsing را فعال کرد.

ارور 404: منبع درخواستی پیدا نشد (Error 404: Not Found) مهم برای سئو

خطای ۴۰۴ می‌گوید سرور قادر به پیدا کردن صفحه درخواست شده کاربر نمی‌باشد و یا صفحه مورد نظر به کل وجود ندارد. خطای ۴۰۴ در مواقعی رخ می‌دهد که واسط کاربری تقاضای منبعی (به طور مثال یک فایل یا صفحه) را از سرور دارد که در حال حاضر موجود نبوده یا حذف شده است.مثلا:

  • ممکن است آدرس لینک درج شده در آیکونی که کاربر برروی آن کلیک کرده است دارای خطای تایپی باشد.
  • احتمال دارد کاربر آدرس URL مورد نظر خود را به اشتباه وارد کرده باشد.
  • امکان دارد دسترسی Read و Execute به کاربری مرتبط با Worker Process سایت مورد نظر داده نشده باشد.
  • ممکن است دایرکتوری پیش فرض سایت مورد نظر در سرور به درستی تنظیم نشده باشد.
  • در صورتیکه قبلا صفحه‌ی درخواستی در سرور موجود بوده و هم اکنون جابجا و یا حذف شده باشد و یا در مسیر صحیحی در سرور قرار نگرفته باشد، بروز این خطا محتمل خواهد بود.
  • در صورتیکه آدرس صفحه یا منبع مربوطه شامل لینک نمادین (Symbolic Link) می‌باشد، باید تنظیمات لازم در وب سرور جهت پشتیبانی از آن صورت پذیرد. در غیر اینصورت امکان بروز این خطا محتمل می باشد.

ارور 405: متد غیر مجاز (Error 405: Method Not Allowed)

خطای ۴۰۵ اشاره می‌کند به این پیتم که متد درخواستی کاربر مجاز نمی‌باشد. به فرض استفاد ه از متد GET در حالتی که منبع درخواستی نیاز به ارسال منابعی از طریق متد POST دارد، یا استفاده از PUT در نوشتن یک فایل، برای فایل هایی که فقط حالت خواندنی دارند (Read-Only)، در این حالت، معمولا سرور در پاسخ، متد مجاز را نیز ارسال خواهد کرد.

ارور 406: غیر قابل قبول (Error 406: Not Acceptable)

سرور قادر به پاسخ دهی درخواست شما با این متد نمی‌باشد. خطای ۴۰۶ ممکن است به دلیل وجود کاراکترهای غیر استاندارد در درخواست ارسالی رخ دهد، برخی از سرورها به دلایل امنیتی نیز ممکن است این کد را در پاسخ ارسال کنند، به طور مثال ماژول mod_security در سرورهای Apache از پذیرفتن برخی آدرس‌های وب (که از نظر امنیت، سرور آنها را مشکوک تشخیص دهد) خودداری کرده و پیام Not Acceptable دریافت خواهید کرد.

ارور 407: نیاز به مجوز پروکسی (Error 407: Proxy Authentication Required)

عملکرد خطای ۴۰۷ نیز شبیه کد ۴۰۱ است، با این تفاوت که در اینجا ابتدا کاربر (واسط کاربری) باید از طریق یک پروکسی اعتبار خود را اثبات کند.

ارور 408: پایان حداکثر زمان درخواست (Error 408: Request Timeout)

انتظار سرور برای ارسال درخواست از سمت کاربر به پایان رسیده است. به این صورت سرور خطای ۴۰۸ را ارسال می‌کند و واسط کاربر می‌تواند مجددا و در دفعات بعدی درخواست خود را ارسال کند.

ارور 409: تعارض (Error 409: Conflict)

خطای ۴۰۹ به معنی تداخل یا تعارض درخواست کاربر با عملیاتی دیگر در سرور بر روی منبع مورد نظر است، به طور مثال وقتی دو کاربر به صورت همزمان در حال ویرایش یک فایل هستند و هر دو آن را ذخیره می‌کنند، ممکن است این خطا رخ دهد که باید به صورت دستی آن را رفع کرد.

ارور 410: محذوف (Error 410: Gone) مهم برای سئو

خطای ۴۱۰ به معنی حذف همیشگی منبع درخواستی از سرور است، بر خلاف خطای ۴۰۴، خطای ۴۱۰ به واسط کاربری یا موتورهای جستجو می‌گوید که نباید مجددا آن منبع را درخواست کنند، چرا که برای همیشه حذف شده است، البته در عمل موارد استفاده از این کد خیلی محدود است و تنظیم خطای ۴۰۴ بهتر و اصولی‌تر است.

ارور 411: عدم ارسال طول درخواست (Error 411: Length Required)

خطای ۴۱۱ به این معنی است که سرور از پاسخ به درخواست واسط کاربری خودداری می‌کند، چرا که در درخواست ارسالی اندازه یا طول محتوا (Content-Length) وجود ندارد، در این حالت معمولا واسط کاربری باید در سربرگ‌های HTTP درخواست خود آن را اضافه کند.

ارور 412: پیش شرط رد شده(Error 412: Precondition Failed)

خطای ۴۱۲ زمانی رخ می‌دهد که سرور در هنگام دریافت درخواست کاربر برخی از پیش‌شرط‌ها یا پیش‌نیازها را دریافت نکرده است.

ارور 413: درخواست خیلی طولانی (Error 413: Request Entity Too Large)

خطای ۴۱۳ زمانی رخ کمی‌دهد که سرور قادر به پردازش درخواست شما به دلیل بزرگ بودن آن نیست. لذا ارتباط توسط سرور قطع خواهد شد، اما اگر این حالت موقتی باشد، معمولا در پاسخ، سربرگ Retry-After نیز ارسال می‌شود و واسط کاربری مجددا و در دفعات بعدی می‌تواند درخواست خود را ارسال کند.

ارور 414: آدرس وب خیلی طولانی (Error 414: Request-URI Too Long)

خطای ۴۱۴ به معنی بیش از حد طولانی بودن آدرس وب (URI) درخواستی است و سرور قادر به پردازش آن نیست.

ارور 415: فرمت پشتیبانی نشده (Error 415: Unsupported Media Type)

خطای ۴۱۵ به دلیل ارسال فرمتی به همراه درخواست ارسالی (به فرض آپلود یک فایل یا تصویر) است که از نظر سرور قابل پذیرش نیست و سرور فرمت دیگری را پشتیبانی می‌کند.

ارور 416: حد درخواستی غیر اقناع کننده (Requested Range Not Satisfiable)

خطای ۴۱۶ زمانی رخ می‌دهد که سرور در حالتی این کد را نمایش خواهد داد که بخشی از یک صفحه درخواستی کاربر برای پردازش سرور قابل قبول نیست.

ارور 417: انتظارات رد شده (Error 417: Expectation Failed)

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

ارور 418: من یک قوری هستم (Error 418: I'm a teapot)

خطای «I’m a teapot» یا «من یک قوری هستم» برمیگردد به سال ۱۹۹۸ یعنی حدود به ۲۰ سال پیش، که در آن سال به عنوان یک شوخی برای دروغ اول آوریل در استانداردها قرار داده شد و حتی در ضمن همین شوخی، پروتکلی به‌عنوان «پروتکل فرامتنی کنترل قوری قهوه» (HTCPCP) نیز برای کنترل نحوه دم کردن قهوه در قوری وضع شد!

با این‌که این کد صرفا در حد یک شوخی است، اما خطای ۴۱۸ هنوز در فهرست کدهای خطا وجود دارد و در برخی از سایت‌ها این کد بامزه‌ پیاده شده است.

برای نمونه می‌توانید با رفتن به آدرس google.com/teapot خطای قوری گوگل را ببینید! فراموش نکنید روی قوری کلیک کنید تا برایتان قهوه هم در فنجان بریزد!

خطاهای سری 500: خطای سمت سرور (Error 500: Server Error)

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

ارور 500: خطای داخلی سرور (Error 500: Internal Server Error) مهم برای سئو

خطای ۵۰۰ معمولا به دلیل نقص تنظیمات یا انجام به روزرسانی نرم افزاری یا سخت افزاری رخ می‌دهد، تنظیم این کد در مواقعی که می‌خواهیم در سایت، تغییراتی اعمال کنیم که باعث از دسترس خارج شدن آن می شود، می‌تواند مفید باشد.

ارور 501: غیر مجهز یا تکمیل نشده (Error 501: Not Implemented)

خطای ۵۰۱ بدین معنی است که سرور قادر به پردازش درخواست واسط کاربری نیست. معمولا به دلیل پشتیبانی نشدن متد ارسالی یا نقص امکانات مورد نیاز این خطا رخ می‌دهد.

ارور 502: خطای دروازه میانجی (Error 502: Bad Gateway)

خطای ۵۰۲ به دلیل عدم دریافت پاسخ از سرورهای بالادست (Upstream) است و سرور فعلی به عنوان یک دروازه میانجی عمل می‌کند، در این حالت معمولا بین سرور اصلی و واسط کاربری، دروازه‌های میانجی (Gateway) وجود دارند که قادر به تکمیل فرایند ارسال و دریافت پاسخ نیستند، این حالت معمولا با چند بار تلاش مجدد از سمت کاربر رفع خواهد شد.

ارور 503: سرویس خارج از دسترس (Error 503: Service Unavailable) مهم برای سئو

دریافت خطای ۵۰۳ به معنی غیر قابل دسترس بودن سرور به دلیل ترافیک زیاد (Overload) یا انجام به روزرسانی است، معمولاً این حالت موقتی بوده و پس از چند دقیقه یا چند ساعت رفع خواهد شد.

ارور 504: پایان حداکثر زمان دروازه میانجی (Error 504: Gateway Timeout)

خطای ۵۰۴ نیز بدین معنی است که سرور به عنوان یک دروازه میانجی (Gateway) قادر به دریافت پاسخ از سرورهای بالا دست (Upstream) در حداکثر زمان مجاز نیست. اگر بخواهیم به طور کلی به دلایل رخ‌داد این خطا اشاره کنیم میگوییم:

  • ممکن است ارتباط شبکه بین دو سرور ضعیف و یا کند باشد.
  • یا سرور پشتی به دلیل عمکرد پایین ویا شلوغی زیاد خیلی کند شده است.
  • و یا زمان timeout تنظیم شده در سرور پشتی کوتاه است.

ارور 505: نسخه HTTP پشتیبانی نمی‌شود (Error 505: HTTP Version Not Supported)

خطای ۵۰۵ به معنی پشتیبانی نشدن نسخه HTTP پروتکلی است که واسط کاربری از آن استفاده می‌کند، معمولا سرور دلیل پشتیبانی نکردن از آن نسخه را نیز به همراه سربرگ‌های پاسخ خود ارسال می‌کند. علاوه بر موارد گفته شده که طبق استاندارد RFC 2616 W3C است، کدهای دیگری مربوط به سرورهای مایکروسافت و سایر پروتکل‌های وب وجود دارد که به جهت کاربردی نبودن از ذکر آنها خودداری کرده‌ایم.

خطاهای مربوط به Nginx و Cloudflare

برخی از کدها هستند که توسط هیچ استاندادری مشخص نشده‌اند.

کدهای سری 4XX که شامل خطاهای 444، 494، 495، 496، 497 و 499 که مربوط به خطاهای Nginx است که اشاره به ارورهای مربوط به درخواست کاربر می‌کنند. و خطاهای سری 5xx که شامل 520، 521، 522، 523، 524، 525، 526، 527 و 530 مربوط به Cloudflare و خطاهای سمت سرور می‌باشد.

جمع‌بندی:

در این مطلب با اکثر کدها و خطاهای HTTP آشنا شدیم. به طور کلی خطاهای سری ۴۰۰ مربوط به سمت کاربر و خطاهای سری ۵۰۰ مربوط به سمت سرور می‌باشد. حال با توجه به آشنایی به سری‌های مختلف می‌توان به راحتی حدس زد که اگر خطایی با پیش شماره ۴ رخ داد، مربوط به خطایی است که از سمت کاربر رخ داده و یا اگر خطایی مانند ۵۰۳ رخ داد، شما متوجه خواهید شد این خطا مربوط به سرور است.

در اکثر مواقع خیلی ساده از کنار این خطاها گذر می‌کنیم ، اما اگر این خطاها بر روی وب سرور خودمان هم اتفاق بیافتد، به همین شکل از آن گذر می‌کنیم؟

پس به عنوان یک کلاینت حرفه‌ای وب و یا به عنوان کسی که سعی دارد وب و دنیای اینترنت را به صورت حرفه‌ای فرا بگیرد باید این کدها را بشناسید و دلایل رخ دادن آنها را بدانید.