پروتکل HTTP یکی از کاربردیترین بخشها در ارائه خدمات وب سرورهاست. در واقع میتوان HTTP را یک زبان پیامرسان وب دانست. گاهی در هنگام عملکرد این پروتکل مشکلاتی ایجاد میشود که منجر به ظاهر شدن خطا برای کاربران میشود. ما در این مقاله قصد داریم که شما را با انواع خطای سرور آشنا کنیم تا بتوانید در مواقع لزوم نسبت به رفع آنها اقدام کنید بنابراین تا انتهای این مطلب با ما همراه باشید.
درخواست HTTP چیست؟
برای آشنایی بهتر با درخواست HTTP قصد داریم تا آن را در قالب چرخه درخواست و پاسخ (Request and response) برایتان شرح دهیم. فرض کنید که شما قصد دارید موضوعی را در گوگل سرچ کنید. به این منظور ابتدا یک مرورگر مانند فایرفاکس را باز کرده و در قسمت URL، موضوع یا سایت مدنظر خود را جستوجو میکنید. در اینجا به مرورگر شما سرویس دهنده گفته میشود. سرویس دهنده، پیام خود را در قالب یک پیام HTTP آماده میکند که به این پیام، درخواست یا Request گفته میشود. سرویس گیرنده (برای مثال دیتا سنتر یا سایت مورد نظر) درخواست شما را دریافت و آن را پردازش میکند. سرویس گیرنده نیز پیام خود را در قالب یک پیام HTTP به سرویس دهنده ارسال میکند. به عبارت دیگر میتوان HTTP را زبان پیامرسان وب دانست.
چه زمانی کد خطاهای HTTP دریافت میشوند؟
قطع به یقین شما هم در هنگام کار با سرورهای مختلف با خطاهایی همچون خطای 404 مواجه شدهاید. به عدد 404 یا اعداد دیگر که گاهی ممکن است به آنها برخورد کنید کد خطاهای HTTP گفته میشود. این خطاها در شرایط و زمانهای مختلفی رخ میدهند. برای مثال اگر شما رمز ورود به اکانت خود در یک سایت را اشتباه وارد کنید در واقع نوعی خطای HTTP به وجود آوردهاید. هم چنین اگر سرور سایت مورد نظر شما قادر به پاسخگویی نباشد نوع دیگری از خطاهای HTTP بر روی صفحه نشان داده میشود.
کلاس مختلف کدها در پروتکل HTTP
هنگام اتصال یک برنامه در وب یا یک وب سرور، درخواستهای HTTP که توسط سرورهای دیگر دریافت میشوند دارای یک کد وضعیت یا Status Code هستند. کدهای وضعیت HTTP سه رقمی هستند و در 5 کلاس مختلف دستهبندی میشوند. کلاس های کد وضعیت HTTP عبارت است از سریهایی که در ادامه به آنها اشاره میکنیم:
1xx
- کد اطلاعات یا information است.
- اطلاعات را نمایش میدهد.
- میتواند نشانگر ادامه فرایند باشند.
- نشانگر پذیرفته شدن درخواست است.
2xx
- نشانگر موفقیت آمیز (Success) بودن فرایند است.
- نشانگر وضعیتهایی است فرایند به درستی انجام شده است.
- نشان میدهد که اطلاعات با موفقیت دریافت شدهاند.
3xx
- درخواست عملیات ریدایرکشن (Redirection) را بر عهده دارد.
- معنی این خطا این است که برای تکمیل درخواست، شما باید اطلاعات دیگری را به سرور بدهید.
4xx
- نشانگر خطای کلاینت (Client Error) است.
- این خطا به خطاهایی که از طرف کاربر یا کلاینت ایجاد شده باشد اختصاص دارد.
- نشانگر این است که کاربر در حال وارد کردن اطلاعات نادرست است.
5xx
- نشانگر خطای سرور (Server Error) است.
- این خطا نشانگر مشکلاتی است که از طرف سرور ایجاد شده است.
- میتواند حاکی از عدم توانایی سرور در تکمیل یک فرآیند باشد.
انواع خطاهای پروتکل HTTP
تا به اینجای کار با کلاس کدهای وضعیت HTTP آشنا شدید. در ادامه به اصطلاحاتی از خطای سرور و خطاهای کلاینت و همچنین به بررسی کد خطاهای سرور و کلاینت به صورت جداگانه خواهیم پرداخت. لازم به ذکر است که عبارت سرور در خطا به معنای مشکل سرویس گیرنده است، مانند صفحات سایتهای مختلف و هم چنین هر جا که با عبارت کلاینت مواجه شدید منظور همان سرویس دهنده است و باید بدانید که مشکل پیش آمده مربوط به کاربر است؛ مانند مرورگری که از آن استفاده میکنید.
انواع خطاهای کلاینت یا Client Error
در بخشهای بالا به این موضوع اشاره کردیم که خطاهای مربوط به کاربر با کد وضعیت 4xx نشان داده میشوند. بنابراین هر خطایی که از طرف کاربر ایجاد شود با کدهای سری 400 نشان داده میشود. به خاطر داشته باشید که خطاهایی که در این بخش به آنها میپردازیم خطای سرور نیستند.
خطای 400 (Error 400)
- اصطلاحا به این خطا «Bad Request» گفته میشود.
- این خطا هنگامی ایجاد میشود که سرور به درستی درخواست کاربر را درک و پردازش نمیکند.
- ممکن است درخواستهای HTTP به درستی برای سرور ارسال نشده باشند.
- ممکن است شیوه نگارش درخواست کاربر (syntax) برای سرور قابل درک نباشد.
- ممکن است در حین انتقال دادهها مشکلی پیش آمده باشد. این مشکلات میتوانند به علت افت سرعت اینترنت یا قطع ارتباط باشد.
خطای 401 (Error 401)
- اصطلاحا به این خطا «Unauthorized» گفته میشود.
- این خطا زمانی به وجود میآید که یک کاربر بخواهد بدون احراز هویت به منابع سرور دسترسی پیدا کند.
- اگر رمز عبور و نام کاربری خود را اشتباه وارد کنید، این خطا برای شما نمایانگر میشود.
- این خطا زمانی ایجاد میشود که یک کاربر نتواند هویت خود را اثبات کند.
- به خاطر داشته باشید که این خطا را با خطای سرور اشتباه نگیرید.
خطای 402 (Error 402)
- خطای 402 اصطلاحا «Payment Required» نام دارد.
- این خطا زمانی ایجاد میشود که برای باز کردن بخشی خاص، نیاز به پرداخت وجه باشد.
- این خطا کاربرد چندانی ندارد.
خطای 403 (Error 403)
- خطای 403 با نام «Forbidden» شناخته میشود.
- این خطا یکی از خطاهای مهم در سئو به شمار میرود.
- این خطا نشانگر ممنوع بودن دسترسی کاربر به یک صفحه یا به خود سایت است.
- ورود به صفحه یا سایت مربوطه حتی با وجود حساب کاربری، نام کاربری و کلمه عبور نیز امکان پذیر نیست.
- ممکن است تحریمهایی که بر علیه یک کشور اعمال شده است نیز این خطا را برای کاربران به وجود آورد.
- هم چنین مدیران ممکن است دسترسی کارمندان را به یک سری از منابع سرور محدود کرده باشند. در این زمان است که کارمندان برای دسترسی به این منابع با خطای 403 مواجه میشوند.
- به خاطر داشته باشید که این خطا را با خطای سرور اشتباه نگیرید.
- تنظیمات htaccess نیز میتواند دسترسی یک سری آدرسها یا آیپیهای مخصوص را به منابع سرور محدود کند. بنابراین اگر به صورت ناگهانی با این خطا مواجه شدید از تنظیمات صحیح و وجود فایل htaccess اطمینان حاصل کنید.
خطای 404 (Error 404)
- این خطا با عنوان «Not Found» شناخته میشود.
- به خاطر داشته باشید که این خطا یک خطای سرور نیست.
- این خطا زمانی رخ میدهد که کاربر درخواستهای HTTP را ارسال کند که فایل مربوط به آن حذف شده یا موجود نباشد.
- اگر با این خطا مواجه شدید ابتدا از صحیح بودن آدرس سایت در URL یا موضوع مدنظر خود اطمینان حاصل کنید.
- اگر دایرکتوری پیشفرض سایت به درستی در سرور تنظیم نشده باشد این خطا نمایان میشود.
- اگر فایل یا صفحهای که کاربر آن را درخواست کرده است جابهجا شده باشد و بعد از جابهجایی در مسیر درستی قرار نگرفته باشد این خطا نمایان میشود.
- ممکن است دسترسی یا پرمیشن read به کاربران در یک بخش داده نشده باشد.
- اکثر مشکلات مربوط به این خطا را می توان با پیکربندی صحیح سایت از نظر دایرکتوری، لینک های سمبلیک و … برطرف کرد.
خطای 405 (Error 405)
- این خطا «Method Not Allowed» نام دارد.
- در صورت مشاهده این خطا باید به دنبال رفع مشکل در بخش کاربری باشید زیرا این خطا جزو خطاهای سرور نیست.
- این خطا زمانی به وجود میآید که سرور از متد درخواستی کاربر پشتیبانی نمیکند.
- به عنوان مثال، اگر سایتی از متد Put استفاده کند، اما کاربر از روش دیگری برای ایجاد درخواست خود استفاده کرده باشد، سایت قادر به پشتیبانی از این متد نخواهد بود و در نتیجه این خطا رخ می دهد.
خطای 406 (Error 406)
- این خطا اصطلاحا «Not Acceptable» نامیده میشود.
- به خاطر داشته باشید که این خطا یک خطای سرور نیست.
- ممکن است تعدادی از آدرسهای وب به دلایل امنیتی توسط یک سری از سرورها پذیرفته نشوند. علت این موضوع عدم هماهنگی آدرس وب و سرور از نظر امنیتی است.
- هم چنین ممکن است درخواستهای HTTP کاربر دارای کاراکترهای غیر استاندارد باشد. در چنین شرایطی با خطای 406 مواجه میشویم.
خطای 408 (Error 408)
- این خطا «Request Timeout» نام دارد.
- حتما شما نیز هنگام انجام تراکنشهای مالی در صفحات وب، زمانسنج بالای صفحه را مشاهده کردهاید. در صورتی که سرور در این زمان مشخص شده درخواست کاربر را دریافت نکند این خطا ظاهر میشود.
- به عبارت دیگر اگر زمان انتظار سرور برای ارسال درخواستهای HTTP کاربر تمام شده باشد این خطا نمایان میشود.
- این خطا نیز از خطاهای سرور به شمار نمیآید.
خطای 410 (Error 410)
- این خطا اصطلاحا «Gone» نام دارد.
- اگر منبعی برای همیشه از سرور حذف شده باشد این خطا به کاربر نمایش داده میشود.
- به عبارت ساده اگر این خطا را مشاهده کردید جستوجوی مجدد فایدهای ندارد زیرا منبع مورد نظر دیگر در سرور وجود ندارد و دسترسی به آن امکان پذیر نیست.
- این خطا با خطای 404 متفاوت است و لازم به ذکر است که استفاده از خطای 404 اصولیتر است.
خطای 413 (Error 413)
· نام این خطای کلاینت «Request Entity Too Large» است.
· گاهی اوقات شما عبارتی بسیار طولانی را در مرورگر خود تایپ میکنید که سرورها قادر به پردازش آن نیستند؛ در این زمان است که این خطا برای شما ظاهر میشود.
· اگر این خطا موقتی باشد، پیام Retry-After برای کاربر ارسال میشود و کاربر میتواند درخواست خود را در زمانی دیگر مجدداً ارسال کند.
· این خطا نیز از خطاهای سرور به شمار نمیآید.
خطای 414 (Error 414)
- نام این خطای کلاینت «Request-URL Too Long» است و همانطور که از نام آن پیداست به طولانی بودن آدرس URL مربوط میشود.
- اگر آدرس وب سایتی را در بخش URL مرورگر وارد کنید و سرور نتواند آن را پردازش کند، این خطا برای شما ظاهر میشود.
خطای 429 (Error 429)
- نام این خطای کلاینت «Too Many Requests» است.
- زمانی که تعداد تبها و افزونههای باز شده توسط کاربر زیاد شود این خطا ظاهر میشود.
- هم چنین اگر تعداد افزونههای منسوخ شده نیز زیاد باشد این خطا برای کاربر به نمایش در میآید.
انواع خطاهای سرور یا Server Error
در بخشهای بالا اشاره کردیم که خطاهای مربوط به سرور را با کد وضعیت 5xx نشان میدهند؛ بنابراین هر خطایی که از طرف سرور ایجاد شود با کدهای سری 500 نشان داده میشود. به خاطر داشته باشید که خطاهایی که در این بخش به آنها میپردازیم خطای کاربر یا کلاینت نیستند.
خطای 500 (Error 500)
- این خطای سرور اصطلاحا «Internal Server Error» نامیده میشود.
- این خطا یکی از خطاهایی است که در زمینه سئو اهمیت زیادی دارد.
- این خطا زمانی که سایتی در حال به روزرسانی یا انجام تغییرات باشد به کاربر نمایش داده میشود.
خطای 501 (Error 501)
- این خطای سرور اصطلاحا «Not Implemented» نامیده میشود.
- این خطا زمانی نمایش داده میشود که وب سرور از درخواست و متد ارسال شده توسط کاربر پشتیبانی نمیکند.
- امروزه با پیشرفت وبسرورها تقریبا تمام متدها برای سرور قابل درک هستند و بسیار کمتر با این خطا مواجه میشویم.
خطای 502 (Error 502)
- نام این خطای سرور «Bad Gateway» است.
- خطای 502 زمانی رخ میدهد که سرور میزبان سایت به درخواست ارسال شده توسط کاربر پاسخ نامعتبری بدهد.
- رایج ترین دلیل بروز این خطا زمانبر بودن پاسخ هاست به درخواستهای ارسالی توسط کاربر است.
- این خطا با چند بار رفرش و تلاش مجدد کاربران یا با پاک کردن کش مرورگر رفع خواهد شد.
خطای 503 (Error 503)
- نام این خطا «Service Unavailable» است.
- گاهی اوقات آنقدر ترافیک یک بخش از سایت بالا میرود که دیگر سرور قادر به پاسخگویی نیست؛ در این زمان است که سرور این خطا را نشان میدهد.
- گاهی اوقات به خاطر بهروزرسانی سایت نیز اتفاق میافتد.
خطای 504 (Error 504)
- نام این خطای سرور «Gateway Timeout» است.
- خطای 504 زمانی نشان داده میشود که سرور gateway که سعی در بارگیری یک صفحه از سایت دارد پاسخی از سرور دیگر دریافت نکند و به زبان ساده سرورهای شما با سرعت کافی با یکدیگر ارتباط برقرار نمیکنند.
- ممکن است کانکشن و ارتباط بین سرورهای gateway و سرورهای upstream ضعیف شده باشد.
- ممکن است حجم ترافیک سرور زیاد شده باشد.
- ممکن است زمان معین شده برای پاسخدهی در سرور کوتاه باشد.
خطای 505 (Error 505)
- نام این خطای سرور «HTTP Version Not Supported» است.
- در این خطا کاربر از نسخهای از پروتکل HTTP استفاده میکند که توسط سرور پشتیبانی نمیشود.
- به طور معمول سرورها دلیل پشتیبانی نکردن از آن نسخه از پروتکل را برای کاربر ارسال میکنند.
خطای 507 (Error 507)
- نام این خطای سرور «Insufficient Storage» است.
- این خطا زمانی رخ میدهد که سرور قادر نباشد موارد مشخص شده در درخواستهای HTTP کاربر را ذخیرهسازی کند.
معروف ترین خطاهای HTTP کدامند؟
خطاهای سمت کلاینت و سمت سرور بسیار زیاد هستند؛ اما تعدادی از آنها هستند که کاربران بیشتر با آنهها برخورد داشته و دستوپنجه نرم کردهاند. از جمله این خطاها میتوان به موارد زیر اشاره کرد:
- 500 Internal Server Error
- 501 Not Implemented
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
- 400 Bad Request
- 401 Unauthorized
- 403 Forbidden
- 404 Not Found
نحوه عیب یابی خطاهای HTTP
در این بخش قصد داریم تا به ارائه راهحل برای رفع 4 خطای رایج HTTP بپردازیم.
رفع خطای 401
- آدرس سایت و اطلاعات وارد شده در بخش URL را بررسی و از درستی آن اطمینان حاصل فرمایید.
- حافظه کش مرورگر خود را پاک کنید.
- حافظه کش فایروال را پاک کنید.
- از سیستم خارج و دوباره وارد شوید.
رفع خطای 404
- به عنوان مدیر سایت بهتر است اطلاعات را روی دامنه جدید ریدایرکت کنید.
- به عنوان کاربر نیز میتوانید آدرس سایت و اطلاعات وارد شده در بخش URL را بررسی و از درستی آن اطمینان حاصل فرمایید.
- حافظه کش مرورگر خود را پاک کنید.
رفع خطای 500
- به عنوان کاربر میتوانید آدرس سایت و اطلاعات وارد شده در بخش URL را بررسی و از درستی آن اطمینان حاصل فرمایید.
- حافظه کش مرورگر خود را پاک کنید.
- هنگام برخورد با این خطا حتما صفحه را چند بار رفرش کنید.
رفع خطای 502
- به عنوان کاربر میتوانید آدرس سایت و اطلاعات وارد شده در بخش URL را بررسی و از درستی آن اطمینان حاصل فرمایید.
- حافظه کش مرورگر خود را پاک کنید.
- ممکن است این خطا به علت ترافیک بالای سرور به وجود آمده باشد. در ساعتی دیگر به سایت مراجعه کنید.
- یک بار از مرورگر خارج شوید و دوباره آن را اجرا کنید.
Response code چیست؟
Response code هم در واقع همان کدهای وضعیت HTTP است که در 5 کلاس مختلف دسته بندی میشوند:
1xx
· کد اطلاعاتی یا information است.
· اطلاعات را نشان میدهد.
2xx
· نشانگر موفقیت آمیز بودن (Success) فرایند است.
· نشانگر شرایطی است که فرایند به درستی انجام شده است.
3xx
- وظیفه درخواست عملیات ریدایرکشن (Redirection) را بر عهده دارد.
- این خطا به معنی این است که برای تکمیل درخواست، شما باید اطلاعات دیگری را نیز به سرور بدهید.
4xx
- نشانگر خطای کلاینت (Client Error) است.
- این خطا به خطاهایی که از طرف کاربر یا کلاینت ایجاد شده باشد اشاره دارد.
5xx
- نشانگر خطای سرور (Server Error) است.
- این خطا نشانگر مشکلاتی است که از سمت سرور ایجاد شده باشد.
سخن آخر
بدون شک همه ما عبارت HTTP را در هنگام استفاده از فضای اینترنت زیاد دیدهایم اما شاید به درستی ندانیم که این عبارت در واقع به چه معناست. ما در این مقاله سعی کردیم که درک واضحی از مفهوم پروتکل HTTP به شما بدهیم؛ همچنین سعی کردیم در این مقاله به اختصار به انواع خطاهای پروتکل HTTP نیز بپردازیم. امیدواریم که این مقاله برایتان مفید بوده باشد و از آن استفاده لازم را برده باشید. از این که با ما همراه هستید متشکریم!