کدهای خطا رایج HTTP
وب سرور هر درخواست HTTP که دریافت می کند را با یک کد وضعیت HTTP پاسخ دهی می نماید. کد وضعیت از سه عدد تشکیل شده و به پنج گروه مختلف تقسیم می گردد. گروه و یا کلاس این کدهای وضعیت توسط اولین رقم آنها به راحتی قابل تشخیص می باشند :
- ۱xx : اطلاعات (Information)
- ۲xx : موفقیت (Success)
- ۳xx : ارجاع (Redirection)
- ۴xx : خطای سمت کاربر (Client Error)
- ۵xx : خطای سمت سرور (Server Error)
بررسی خطای سمت کاربر و سرور :
خطاهای سمت کاربر یا کدهای وضعیت از ۴۰۰ تا ۴۹۹, نتیجه ی درخواست های HTTP هستند که توسط نرم افزارهای HTTP سمت کاربر (مانند مرورگر وب) ارسال می شوند. گرچه این دست از خطاها به صورت معمول مربوط به طرف کاربر می باشند ولی آگاهی از اینکه کاربر با چه کد خطای مواجه شده است نیز به جهت امکان سنجی رفع آن از طریق ایجاد تغییرات در تنظیمات سرور, مفید واقع خواهد شد. خطای های سمت سرور یا کدهای وضعیت ۵۰۰ تا ۵۹۹ نیز زمانی نمایش داده می شوند که مشکلی در تنظیمات وب سرور وجود داشته و یا وب سرور توانایی انجام درخواست مربوطه را ندارد.
راهکارهای کلی رفع مشکلات مربوطه :
- زمانیکه از مرورگر به جهت امتحان وب سرور استفاده می کنید, به خاطر داشته باشید که حتما بعداز ایجاد هرگونه تغییر در سرور به جهت مشاهده نتیجه, مرورگر خود را رفرش نمایید.
- بخش لاگ موجود در سرور خود را برای بدست آوردن اطلاعات بیشتر در رابطه با نحوه مواجه شدن سرور با درخواست های مربوطه بررسی نمایید. به طور مثال وب سرورهایی مانند Apache و Nginx لاگ فایل های مرتبط را در دو فایل به نام های log و error.log ایجاد می نمایند لذا با بررسی کامل این دو فایل اطلاعات جامع و مناسبی کسب خواهد شد.
- به خاطر داشته باشید که تعاریف کدهای وضعیت HTTP بخشی از استانداردی هستند که توسط نرم افزارهای مرتبط سمت سرور پیاده سازی شده اند. بنابراین کدهای وضعیتی که به نمایش در می آیند به چگونگی برخورد (مواجهه) نرم افزار مرتبط در سمت سرور با خطای مربوطه بستگی خواهد داشت.
۴۰۰ Bad Request: این کد خطا نشان دهنده این مورد است که درخواست HTTP ارسال شده به سرور دارای syntax صحیحی نمی باشد.
در ذیل به برخی از شرایطی که ممکن است باعث بروز این خطا شود اشاره می شود :
- کوکی سمت کاربر مرتبط با سایت از بین رفته است.
- درخواست ارسالی به دلیل وجود مشکل در مرورگر ناقص است.
- درخواست ارسالی به دلیل استفاده از فرمت اشتباه در زمان تایپ درخواست توسط کاربر ناقص است (به طور مثال زمانیکه از دستور curl به شکل صحیح استفاده نشود)
۴۰۱ Unauthorized: این خطا زمانی رخ می دهد که کاربری بدون آگاهی از اطلاعات لاگین (نام کاربری و رمز عبور مربوطه) بخواهد به منبع یا صفحه ای که توسط HTTP Authentication محافظت شده دسترسی داشته باشد.
۴۰۳ Forbidden: به این معنی است که درخواست معتبر و بدون وجود مشکل بوده (مثلا syntax درخواست صحیح است) ولی سرور درخواست را به دلیل اینکه کاربر دسترسی های لازم به جهت استفاده از منابع مربوطه ندارد, رد می کند.
در ذیل برخی از دلایل اصلی مواجه با این خطا اعلام می گردد :
عدم ارائه دسترسی صحیح به فایل : باید بررسی کرد که worker process این وب سایت در سرور به چه کاربری اختصاص داده است و سپس دسترسی لازم (خواندن, نوشتن و یا هردو) به فایل و یا فلدر مربوطه به کاربری مرتبط ارائه گردد.
وجود فایل .htaccess با تنظیمات نادرست : از فایل .htaccess می توان به جهت ایجاد محدودیت های دسترسی به منابع خاص استفاده نمود لذا بررسی وجود این فایل و اطمینان از عدم ایجاد محدودیت دسترسی نادرست در رفع این مشکل مفید می باشد.
عدم وجود صفحه پیش فرض : در صورتیکه صفحه ی پیش فرض وجود نداشته یا تعریف نشده باشد و قابلیت Directory Browsing نیز فعال نباشد, وب سرور خطای مربوطه را نمایش خواهد داد لذا در این شرایط برای رفع این مشکل می باید صفحه پیش فرض تعریف نموده و یا قابلیت Directory Browsing فعال گردد.
۴۰۴ Not Found: در این مورد کاربر قادر به برقرار ارتباط با سرور می باشد ولی صفحه مورد درخواست در مسیر مربوطه در سرور موجود نمی باشد. شرایط متفاوتی برای نمایش این خطا وجود دارد که در مواجهه با آن می توان موارد ذیل را دنبال نمود :
- ممکن است لینک ثبت شده در آیکونی که کاربر برروی آن کلیک نموده است دارای خطای تایپی باشد.
- احتمال دارد کاربر URL مورد نظر خود را به اشتباه وارد کرده باشد.
- در صورتیکه قبلا صفحه درخواستی در سرور موجود بوده و هم اکنون جابجا و یا حذف شده باشد و یا در مسیر صحیحی در سرور قرار نگرفته باشد, بروز این خطا محتمل خواهد بود.
- ممکن است دایرکتوری پیش فرض سایت مربوطه در سرور به درستی تنظیم نشده باشد.
- امکان دارد دسترسی Read و Execute به کاربری مرتبط با worker process سایت مربوطه اعطاء نشده باشد.
- در صورتیکه آدرس صفحه یا منبع مربوطه شامل لینک نمادین (symbolic link) می باشد باید تنظیمات لازم در وب سرور جهت پشتیبانی از آن صورت پذیرد.
۵۰۰ Internal Server Error: به این معنی است که سرور مربوطه یک Gateway یا Proxy سرور است که با توجه به درخواستی که برای آن ارسال شده و تنظیمات ست شده برروی آن, امکان دریافت پاسخ معتبر از سرور پشتی (سرور backend – که مسئول اصلی پاسخگویی به درخواست ارسال شده است) را ندارد. در این شرایط می توان موارد ذیل را بررسی نمود :
- آیا سرور backend با مشکل مواجه است ؟
- آیا پراکسی سرور دارای تنظیمات صحیحی به جهت ارجاع درخواست به سرور پشتی می باشد؟
- احتمال خرابی شبکه ی مرتبط بین سرور پراکسی و سرور پشتی به درستی بررسی شده و همچنین از باز بودن پورت های مورد نظر در هر دو سرور اطمینان حاصل شود.
- در صورتیکه وب اپلیکیشن مربوطه قرار است برروی سوکتی خاص مورد استفاده قرار گیرد, سرورها را به جهت وجود تنظیمات صحیح در این رابطه بررسی و از وجود پرمیشن های صحیح اطمینان حاصل نمایید.
۵۰۳ Service Unavailable: این خطا بدین معنی است که سرور دارای بار زیادی بوده (به اصطلاح overload شده) و یا در حال تعمیر (maintenance) می باشد. در صورتیکه سرور درحال تعمیر نباشد, دلیل بروز این خطا کمبود میزان منابع CPU و یا RAM و یا عدم ارائه مجوز استفاده بیشتر از process و threads ها به کاربران در سرور به جهت انجام پروسه های درخواستی می باشد.
۵۰۴ Gateway Timeout: به این معنی است که سرور مربوطه یک Gateway یا Proxy سرور است که درخواست مربوطه را (با توجه به تنظیمات انجام شده ) به سرور پشتی مورد نظر ارسال نموده ولی سرور backend در بیشنه زمانی تعیین شده پاسخی نداده است. این مشکل معمولاً در یکی از شرایط ذیل به وقوع می پیوندد :
- ارتباط شبکه بین دو سرور ضعیف و کند است.
- سرور پشتی به دلیل عمکرد پایین بسیار کند است.
- زمان timeout تعریف شده در سرور پشتی بسیار کوتاه است.