کدهای وضعیت HTTP مانند یادداشت های کوتاهی از یک سرور هستند که بر روی یک صفحه وب قرار میگیرند. اما آنها بخشی از محتوای سایت نیستند. در عوض، آنها پیامهایی از طرف سرور هستند که به شما اطلاع میدهند وقتی درخواست مشاهده یک صفحه خاص را دریافت کرد، اوضاع چگونه پیش رفته است.
این نوع پیامها هر بار که مرورگر شما با یک سرور تعامل میکند، بازگردانده میشوند، حتی اگر آنها را نبینید. اگر مالک یا توسعه دهنده وب سایت هستید، درک کدهای وضعیت HTTP بسیار مهم است. هنگامیکه کدهای وضعیت HTTP ظاهر میشوند، ابزاری ارزشمند برای تشخیص و رفع خطاهای پیکربندی وب سایت هستند.
در این مقاله خواهیم گفت خطای سرور چیست و راهحل برطرف کردن هرکدام را بررسی خواهیم کرد.
درخواست HTTP چیست؟
هر بار که روی پیوندی کلیک میکنید یا URL را تایپ میکنید و Enter را فشار میدهید، مرورگر شما درخواستی را برای وبسرور سایتی که میخواهید به آن دسترسی داشته باشید ارسال میکند. سرور درخواست را دریافت و پردازش میکند و سپس منابع مربوطه را به همراه یک هدر HTTP برمیگرداند.
هنگامیکه از یک وب سایت بازدید میکنید، مرورگر شما دهها یا صدها درخواست را در پس زمینه به سرور آن ارسال میکند. سرور با ارائه تمام دادهها و فایل هایی که سایت برای بارگیری نیاز دارد به این درخواستها پاسخ میدهد. با این حال، روند واقعی پیچیده تر از آن است.
اگر میخواهید عملکرد وب سایت خود را افزایش دهید، درک نحوه عملکرد درخواست های HTTP ضروری است. برخی از این اقدامات بهینه سازی شامل به حداقل رساندن و فشرده سازی درخواستها است. در اصل، شما سرور خود را برای پاسخگویی بهتر به درخواست های HTTP بهینه میکنید.
انواع مختلفی از روش های درخواست HTTP وجود دارد که به طور کامل نوع پاسخی که از سرور دریافت میکنید را تغییر میدهد. رایج ترین آنها عبارتند از:
- درخواست Get
این متداول ترین روش درخواست HTTP است که تاکنون استفاده میشود. یک درخواست GET از سرور اطلاعات یا منبع خاصی را میخواهد. هنگامیکه به یک وب سایت متصل میشوید، مرورگر شما معمولاً چندین درخواست GET برای دریافت داده هایی که برای بارگذاری صفحه نیاز دارد ارسال میکند.
- درخواست Head
با درخواست HEAD، شما فقط اطلاعات هدر صفحه ای را که میخواهید بارگیری کنید، دریافت میکنید. شما میتوانید از این نوع درخواست HTTP برای اطلاع از اندازه سند قبل از دانلود با استفاده از GET استفاده کنید.
- درخواست Post
مرورگر شما از روش درخواست POST HTTP زمانی که نیاز به ارسال داده به سرور دارد استفاده میکند. به عنوان مثال، اگر یک فرم تماس را در یک وب سایت پر کنید و آن را ارسال کنید، از یک درخواست POST استفاده میکنید تا سرور آن اطلاعات را دریافت کند.
- درخواست Put
درخواست های PUT از نظر عملکرد مشابه روش POST هستند. با این حال، به جای ارسال داده، از درخواست های PUT برای به روز رسانی اطلاعاتی که از قبل در سرور نهایی وجود دارد استفاده میکنید.
انواع دیگری از درخواست های HTTP وجود دارد که میتوانید از آنها استفاده کنید، از جمله روش های DELETE، PATCH، و OPTIONS.. با این حال، آنها در استفاده روزانه نسبتاً غیر معمول هستند.
ارسال یک درخواست HTTP شامل ارسال یک پیام به سرور گیرنده در یک فرمت خاص است. سرور پاسخی را برمیگرداند و کلاینت بر این اساس اقدام میکند. به عنوان مثال، ممکن است منابع را بارگیری کند یا شما را به صفحه دیگری هدایت کند.
وقتی یک خطای HTTP دریافت میکنید، معمولاً به این دلیل است که سرور نمیتواند درخواست شما را برآورده کند. کد خطایی که دریافت میکنید باید دلیل آن را توضیح دهد. برخی از رایج ترین دلایل خطاهای HTTP شامل عدم اتصال به سرور و یافتن منابع درخواست شده است.
چه زمانی کد خطاهای HTTP دریافت میکنیم؟
درخواست Http و کدهای وضعیت HTTP در هدر HTTP به مرورگر شما تحویل داده میشود. در حالی که هر بار که مرورگر شما یک صفحه وب یا منبعی را درخواست میکند، کدهای وضعیت بازگردانده میشوند، اکثر اوقات شما آنها را نمیبینید.
معمولاً فقط زمانی که مشکلی پیش میآید ممکن است یکی از آنها را در مرورگر خود مشاهده کنید. این روش سرور برای گفتن این است که خطایی وجود دارد و یا “چیزی درست نیست. در اینجا کدی وجود دارد که توضیح میدهد چه چیزی اشتباه بوده است.
۵ کلاس مختلف کدها در پروتکل HTTP
در همه سرورها کدهای وضعیت HTTP به 5 “کلاس” تقسیم میشوند. این کلاسها گروههایی از پاسخها هستند که معانی مشابه یا مرتبط دارند. دانستن اینکه آنها چه هستند میتواند به شما کمک کند تا به سرعت محتوای کلی یک کد وضعیت را قبل از جستجوی معنای خاص آن تعیین کنید.
در هر یک از این کلاس ها، انواع کدهای سرور وجود دارد و ممکن است توسط سرور بازگردانده شوند. هر کد جداگانه معنای خاص و منحصر به فردی دارد که در لیست جامعتر زیر به آن خواهیم پرداخت.
- کلاس 1xx: کدهای اطلاعاتی که نشان میدهد درخواست آغاز شده و توسط مرورگر ادامه دارد.
- کلاس 2xx: زمانی که درخواست مرورگر توسط سرور دریافت، درک و پردازش شد، کدهای موفقیت از این نوع برگردانده میشوند.
- کلاس 3xx: زمانی که منبع جدیدی جایگزین منبع درخواستی شده باشد، کدهای تغییر مسیر یا ریدایرکت بازگردانده میشوند.
- کلاس 4xx: کدهای خطای کلاینت نشان میدهد که مشکلی در درخواست وجود دارد.
- کلاس 5xx: کدهای خطای سرور نشان میدهد که درخواست پذیرفته شده است، اما یک خطا در سرور مانع از انجام درخواست شده است.
تمامیخطاهای پروتکل HTTP + روش های برطرف کردن آن
خطاهای کلاینت یا Client Error
در سطح 400، کدهای وضعیت HTTP شروع به مشکل شدن میکنند. اینها کدهای خطایی هستند که مشخص میکنند ایرادی در مرورگر و/یا درخواست شما وجود دارد. کد وضعیتها به شرح زیر میباشند:
۱- خطای 400
کد 400 http یا «درخواست بد». سرور نمیتواند پاسخی را به دلیل خطایی در سمت مشتری بازگرداند.
۲- خطای 401
کد 401 یا «غیر مجاز» یا «مجوز مورد نیاز است». هنگامیکه منبع هدف فاقد اعتبارنامه معتبر احراز هویت باشد، این کد توسط سرور برگردانده میشود. اگر احراز هویت اولیه HTTP را با استفاده از htpa تنظیم کرده باشید، ممکن است این کد خطا را ببینید.
۳- خطای 402
کد 402 یا “Payment Required یعنی «پرداخت الزامیاست». در اصل، این کد برای استفاده به عنوان بخشی از یک سیستم نقدی دیجیتال ایجاد شده است. با این حال، آن طرح هرگز اجرا نشد.
درعوض، پلتفرمهای مختلفی از آن استفاده میکنند تا نشان دهند که یک درخواست معمولاً به دلیل کمبود بودجه مورد نیاز نمیتواند برآورده شود. موارد رایج عبارتند از:
- به محدودیت درخواست روزانه خود برای Google Developers API رسیده اید.
- به طور مثال شما هزینه های Shopify خود را پرداخت نکرده اید و فروشگاه شما به طور موقت غیرفعال شده است.
- پرداخت شما از طریق Stripe ناموفق بوده است، یا Stripe سعی دارد از پرداخت تقلبی جلوگیری کند.
۴- خطای 403
کد 403 یا Access to that resource is forbidden «دسترسی به آن منبع ممنوع است». این کد زمانی برگردانده میشود که کاربر تلاش میکند به چیزی دسترسی پیدا کند که اجازه مشاهده آن را ندارد.
به عنوان مثال، تلاش برای دسترسی به محتوای محافظت شده با رمز عبور بدون ورود به سیستم ممکن است خطای 403 ایجاد کند.
۵- خطای 404
کد خطای 404 یا The requested resource was not found با “منبع درخواستی یافت نشد.” این رایج ترین پیام خطاهای 400 است. این کد به این معنی است که منبع درخواستی وجود ندارد و سرور از وجود آن اطلاعی ندارد.
۶- خطای 405
کد 405 یا «متد مجاز نیست». این زمانی ایجاد میشود که سرور میزبان (سرور مبدأ) از روش دریافتی پشتیبانی میکند، اما منبع هدف این کار را نمیکند.
۷- خطای 406
کد 406 یا “پاسخ قابل قبول نیست.” منبع درخواستی تنها قادر به تولید محتوایی است که مطابق با هدرهای پذیرش ارسال شده در درخواست، قابل قبول نیست.
۸- خطای 408
کد 408 یا زمان انتظار سرور برای بقیه درخواست از مرورگر تمام شد. این کد زمانی ایجاد میشود که یک سرور در حالی که منتظر درخواست کامل مرورگر است، زمان اتمام آن تمام شود.
به عبارت دیگر، سرور درخواست کامل ارسال شده توسط مرورگر را دریافت نکرد. یکی از دلایل احتمالی میتواند تراکم خالص باشد که منجر به از دست رفتن بسته های داده بین مرورگر و سرور میشود.
۹- خطای 410
کد 410 The requested resource is gone and won’t be coming back یا “منبع درخواستی از بین رفته است و دیگر باز نمیگردد.” این شبیه به کد 404 “Not Found” است، با این تفاوت که کد 410 نشان میدهد که وضعیت مورد انتظار و دائمی است.
۱۰- خطای 413
کد 413 Payload Too Large یا «بارگیری خیلی بزرگ» یا «درخواست موجودیت خیلی بزرگ». درخواست شما بزرگتر از آن چیزی است که سرور بخواهد یا بتواند آن را پردازش کند.
۱۱- خطای 414
کد 414 یا “URI خیلی طولانی است.” این معمولاً نتیجه یک درخواست GET است که به عنوان یک رشته کوئری کدگذاری شده است که برای پردازش سرور بسیار بزرگ است.
۱۲- خطای 429
کد 429 Too many requests یا “درخواست های خیلی زیاد.” این زمانی توسط سرور ایجاد میشود که کاربر در مدت زمان معین درخواست های زیادی ارسال کرده باشد (محدود کردن نرخ).
این کد ممکن است گاهی اوقات به دلیل تلاش رباتها یا اسکریپتها برای دسترسی به سایت شما رخ دهد. در این مورد، ممکن است بخواهید URL ورود به وردپرس خود را تغییر دهید.
خطاهای سرور یا Server Error
کدهای وضعیت سطح 500 نیز خطا محسوب میشوند. با این حال، آنها نشان میدهند که مشکل در سمت سرور است. این امر میتواند حل آنها را دشوارتر کند.
۱- خطای 500
کد خطای 500 There was an error on the server and the request could not be completed یا “خطایی در سرور وجود داشت و درخواست تکمیل نشد.” این کد عمومیاست که به سادگی به معنای “خطای سرور داخلی” است.
مشکلی در سرور رخ داده و منبع درخواستی تحویل داده نشده است. این کد معمولاً توسط پلاگین های شخص ثالث، PHP معیوب یا حتی اتصال به پایگاه داده قطع میشود.
۲- خطای 501
کد خطا 501 یا “اجرا نشده.” این خطا نشان میدهد که سرور از عملکرد مورد نیاز برای انجام درخواست پشتیبانی نمیکند. این تقریباً همیشه یک مشکل در خود سرور وب است و معمولاً باید توسط میزبان حل شود.
این وضعیت همچنین میتواند یک هدر Retry-After ارسال کند که به درخواستکننده میگوید چه زمانی دوباره بررسی کند تا ببیند آیا عملکرد تا آن زمان پشتیبانی میشود یا خیر.
501 پاسخ مناسب زمانی است که سرور روش درخواست را تشخیص نمیدهد و قادر به پشتیبانی از آن برای هیچ منبعی نیست. تنها روش هایی که سرورها باید از آنها پشتیبانی کنند (و بنابراین نباید 501 را برگردانند) GET و HEAD هستند.
اگر سرور روش را تشخیص دهد، اما عمداً از آن پشتیبانی نکند، پاسخ مناسب 405 Method Not Allowed است.
۳- خطای 502 (Bad Gateway)
کد خطای 502 معمولاً به این معنی است که یک سرور از سرور دیگری پاسخ نامعتبر دریافت کرده است، مانند زمانی که یک سرور پراکسی در حال استفاده است.
سایر مواقع یک پرس و جو یا درخواست خیلی طول میکشد و بنابراین توسط سرور لغو یا کشته میشود و اتصال به پایگاه داده قطع میشود.
۴- خطای 503
کد خطا 501 یا “سرور در حال حاضر برای حل این درخواست در دسترس نیست.” درخواست را نمیتوان در این مقطع زمانی تکمیل کرد. این کد ممکن است توسط سروری که بیش از حد بارگذاری شده است که قادر به انجام درخواست های اضافی نیست، بازگردانده میشود.
۵- خطای 504
کد خطای 504 یا The server, acting as a gateway, timed out waiting for another server to respond “سرور که به عنوان یک دروازه عمل میکند، زمان انتظار برای پاسخگویی سرور دیگر به پایان رسیده است.”
این کد زمانی است که دو سرور درگیر پردازش یک درخواست هستند و زمان سرور اول در انتظار پاسخ سرور دوم است.
۶- خطای 505
کد خطا 505 یا “نسخه HTTP پشتیبانی نمیشود.” سرور از نسخه HTTP که مشتری برای ارسال درخواست استفاده کرده است پشتیبانی نمیکند.
کد وضعیت پاسخ پروتکل انتقال ابرمتن (HTTP) 505 با مظمون “نسخه HTTP پشتیبانی نمیشود” نشان میدهد که نسخه HTTP استفاده شده در درخواست توسط سرور پشتیبانی نمیشود.
۷- خطای 507
کد وضعیت پاسخ HTTP 507 Insufficient Storage یک پیام خطای سرور است که نشان میدهد سرور فضای کافی برای پاسخگویی به درخواست HTTP ندارد. وقتی کد وضعیت 507 Insufficient Storage دریافت میشود، سرور فضای ذخیرهسازی کافی برای پاسخگویی به درخواست HTTP ندارد.
این میتواند یک درخواست HTTP PUT یا POST باشد که معمولاً معتبر است و در صورت لزوم از سهمیه مشتری تجاوز نمیکند، اما در عوض نمیتواند موفق شود زیرا فضای ذخیرهسازی سرور پر است.
پیام به عنوان بخشی از مشخصات WebDAV طراحی شده است و به عنوان یک مشکل موقت در نظر گرفته میشود.
نتیجه گیری
در حالی که ممکن است در ظاهر گیج کننده یا ترسناک به نظر برسند، کدهای وضعیت HTTP در واقع بسیار آموزنده هستند. با یادگیری برخی از موارد رایج، میتوانید مدیریت سرور را ساده تر نموده و مشکلات سایت خود را سریعتر عیب یابی کنید.
در این پست، ما بیش از 10 کد وضعیت HTTP را تعریف کرده ایم که ممکن است با آنها مواجه شوید. از کدهای 400 گرفته تا خطاهای 500 پیچیده تر، درک این پیامها برای حفظ وب سایت شما و اطمینان از در دسترس بودن آن برای کاربران بسیار مهم است.
سوالات متداول
- کش مرورگر خود را پاک کنید
- غیرفعال کردن تنظیمات پروکسی
- HEAD Method.
- PUT Method.
- DELETE Method.
- CONNECT Method.
- OPTIONS Method.
- TRACE Method.
دیدگاهتان را بنویسید