انواع خطاهای درخواست HTTP و راه‌‎حل آنها

400 Bad Requestاین کد خطا نشان دهنده‌‎ی آن است که نحو (Syntax) درخواست HTTP ارسال شده نامعتبر است.این موارد دلایل احتمالی رخ دادن چنین خطایی میباشد:کوکی هایی که در مرورگر کاربر در ارتباط با سایت ثبت شده اند با مشکل مواجه شده اند. خالی کردن Cache و Cookie ها میتواند این مشکل را برطرف نماید.ضعف درخواست به دلیل خطاها یا مشکلات مرورگرخطاهای انسانی در راستای تولید دستی درخواست HTTP مانند استفاده از CURL.401 Unauthorizedاین کد خطا بیانگر تلاش تایید اعتبار نشده یا به درستی تایید اعتبار نشده برای دسترسی به یک منبع (محتوای دیجیتال) میباشد. این موضوع بدین معنی است که کاربر برای دسترسی به محتوای محافظت شده، میبایست اطلاعاتی صحیح جهت احراز هویت خویش ارائه کند.نمونه‎‌ی ساده‌‎ی رخداد این کد خطا را میشود در تلاش برای دسترسی به منبعی که توسط HTTP محافظت میشود یافت نمود. در این مورد کاربر تا زمانی که نام‌‎کاربری یا گذرواژه ی صحیح موجود در پرونده‎‌ی .htpasswd را ارائه نکند، کد خطای 401 دریافت خواهد نمود.403 Forbiddenاین کد خطا بدین معناست که کاربر درخواست معتبری از نوع HTTP ارسال نموده است اما سرور به دلیل ضعف دسترسی وی، از این دسترسی ممانعت به عمل می آورد. اگر شما به اشتباه این کد را دریافت میکنید، راه حل های مشخصی برای رفع این مشکل وجود دارد:سطح دسترسی پرونده هااین خطا معمولا زمانی رخ میدهد که کاربری که درحال اجرای وب سرور میباشد، با دسترسی ناکافی برای خواندن پرونده، نمیتواند به آن دسترسی پیدا کند.مثال:کاربر در تلاش برای دسترسی به ایندکس وب سرور از آدرس زیر است: http://example.com/index.htmlپردازش عملگر وب سرور تحت سلطه‎‌ی کاربر www-data است.در سرور، پرونده‎‌ی ایندکس در آدرس /usr/share/nginx/html/index.html قرار گرفته است.اگر کاربر درحال دریافت کد خطای 403 میباشد،بدین معناست که کاربر www-data دسترسی کافی برای خواندن پرونده ندارد. پس عمدتا، سایر دسترسی های این پرونده باید بر روی خواندن تنظیم شود. راه حال متفاوتی برای اطمینان از این موضوع وجود دارد، ولی دستور زیر در شرایط کنونی میتواند مشکل را حل کند:sudo chmod o=r /usr/share/nginx/html/index.html.htaccessیکی دیگر از پتانسیل های رخداد چنین خطایی، اغلب به صورت داخلی، استفاده از یک پرونده‎‌ی .htaccess میباشد. این پرونده میتواند از دسترسی یک آی‎‌پی خاص یا محدوده‎‌ای از آی‎‌پی‌‎ها به بعضی منابع جلوگیری کند.اگر کاربر به اشتباه این کد خطا را دریافت میکند، از نبود یک پرونده‎‌ی .htaccess اطمینان حاصل کنید.اندیس پرونده‌ی مورد نظر یافت نشداگر کاربر در تلاش برای دسترسی به یک پوشه باشد که شامل هیچ پرونده‎‌ی Index نبوده و همپنین ماژول لیست کردن پوشه‎‌ها فعال نباشد؛ وب سرور این کد خطا را تولید خواهد نمود. برای مثال اگر کاربر در تلاش برای دسترسی به http://example.com/emptydir/ و در اینجا هیچ پرونده‎‌ی Index ای در این پوشه‌‎ی خالی وجود نداشته باشد، این کد خطا تولید خواهد شد.اگر میخواهید ماژول لیست کردن پوشه‎‌ها فعال شود، به تنظیمات وب سرور مراجعه نمایید.404 Not Foundاین کد خطا نشان دهنده‎‌ی آن است که کاربر مجاز به برقراری ارتباط با سرور میباشد اما وب سرور قادر به یافتن منبع مورد نظر کاربر نیست.این کد خطا در گستره‎‌ی عظیمی از وضعیت ها رخ خواهد داد. اگر این خطا به اشتباه توسط کاربر دریافت میشود، راه حل های زیادی برای رفع این مشکل وجود دارد:پیوندی که کاربر را به سرورتان هدایت میکند دارای خطاهای تایپوگرافی نیست ؟کاربر پیوند درستی را وارد نموده است؟این پرونده در جای درستی در سرور موجود است؟ آیا جابه‌‎‌جا یا حذف شده است؟آیا تنظیمات سرور دارای استناد صحیح به مسیر ریشه است (درست تنظیم شده است) ؟آیا کاربری که پردازش عملگر وب سرور را در اختیار دارد حق داخل شدن به پوشه‎‌ای که پرونده‎‌ی مورد نظر آنجاست را دارد؟ آیا منبع به وسیله‌ی یک symbolic (همان shortcut) در دسترس است؟ اگر چنین است، از تنظیم بودن وب سرور جهت دنبال کردن symbolic ها مطمئن شوید.500 Internal Server Errorاین کد خطا بدان معناست که سرور به دلیل نامشخصی قادر به پردازش درخواست ارسالی نمیباشد. بعضی اوقات این کد زمانی که کدهای 5xx خاص تر مناسب باشند، نمایان میشود.بیشترین علت رخ داد چنین خطایی، تنظیمات اشتباه سرور (.htaccess نادرست) یا نبود پکیج‎‌ها (اجرای یک پرونده‌‎ی PHP بدون نصب درست PHP) میباشد.502 Bad Gatewayاین کد خطا بدان معناست که این سرور، یک درگاه یا سرور پراکسی میباشد، و یک پاسخ معتبر از سرورهای پشتیبان دریافت نمی کند که در واقع آنها باید درخواست را انجام دهند.اگر سرور مورد نظر یک سرور پروکسی معکوس است، مانند یک متعادل کننده بار (Load Balancer) ، در اینجا چند مورد برای بررسی وجود دارد:سرورهای پشتیبان که درخواست های HTTP به آنها ارسال می شود، سالم هستند؟پروکسی معکوس به درستی با خصوصیات مناسب Backend مشخص شده، پیکربندی شده است؟ اتصال شبکه بین سرورهای Backend و سرور پروکسی معکوس سالم است؟ اگر سرورها می توانند در سایر پورت ها ارتباط برقرار کنند، فایروال به ترافیک بین آنها اجازه تردد می دهد؟اگر برنامه وب شما برای گوش دادن سوکت پیکربندی شده، اطمینان حاصل شود که آیا سوکت در مکان صحیح وجود دارد و آیا دارای مجوز مناسب است؟503 Service Unavailableکد وضعیت 503 یا خطای سرویس غیر قابل دسترس، به این معنی است که سرور بیش از حد تحت فعالیت بوده و یا تحت تعمیر و نگهداری است. این خطا به این معنی است که سرویس باید در برخی موارد قابل دسترس باشد. اگر سرور تحت تعمیر و نگهداری قرار نگیرد، این می تواند نشان دهد که سرور به اندازه کافی CPU یا منابع حافظه ای برای رسیدگی به تمام درخواست های ورودی ندارد یا اینکه وب سرور نیاز به پیکربندی دارد تا کاربران ، موضوعات یا فرآیندها بیشتری را مجاز کند.504 Gateway Timeoutکد وضعیت 504، یا خطای وقفه دروازه، به این معنی است که سرور یک درگاه یا پروکسی سرور است و از سرورهای پشتیانی در مدت زمان مجاز پاسخ نمی گیرد. این معمولا در شرایط زیر اتفاق می افتد:اتصال شبکه بین سرور ها ضعیف است.سرور پشتیبان که درخواست را انجام می دهد، به دلیل عملکرد ضعیف، بسیار کند است.مدت زمان وقفه دروازه یا پروکسی سرور خیلی کوتاه است.ترجمه شده از: وب‌‎سایت DigitalOcean