وقتی یک کاربر اینترنتی آدرس وبسایتی را در مرورگر خود وارد کرده و به آن مراجعه میکند، یک فرآیند پیچیده در پشت صحنه اتفاق میافتد تا صفحه مورد نظر برای او به نمایش درآید. یکی از اجزای کلیدی این فرآیند، کدهای وضعیت پاسخ HTTP یا (HTTP Response Status Codes) هستند. این کدها اطلاعاتی در مورد وضعیت درخواست کاربر به سرور وبسایت و نحوه پاسخگویی سرور به این درخواست را ارائه میدهند. برای افراد مبتدی دنیای کامپیوتر و برنامهنویسی، فهم این کدها ممکن است کمی دشوار به نظر برسد.
کدهای وضعیت پاسخ HTTP به صورت شمارشی و سهرقمی تعریف شدهاند و هر یک نشاندهنده وضعیت خاصی از درخواست HTTP هستند. این کدها به پنج دسته اصلی تقسیم میشوند که هر دسته با یک عدد خاص (از 1 تا 5) آغاز میشود. در ادامه، ساختار و دستهبندی این کدها را بررسی میکنیم.
کدهای وضعیت 1xx (اطلاعاتی)
کدهای وضعیت 1xx در پروتکل HTTP به معنای پاسخهای اطلاعاتی هستند و به ندرت در استفاده روزمره کاربران دیده میشوند. این کدها نشان میدهند که درخواست کاربر دریافت شده و در حال پردازش است. این کدها معمولاً در پروتکلهای پیچیدهتر و در شرایط خاص استفاده میشوند. در این بخش، به بررسی برخی از مهمترین کدهای وضعیت 1xx خواهیم پرداخت.
100 Continue
کد 100 Continue یکی از پرکاربردترین کدهای 1xx است. این کد به این معناست که سرور درخواست اولیه کاربر را دریافت کرده و آماده دریافت بخشهای بعدی درخواست است. این کد معمولاً در مواقعی استفاده میشود که درخواست کاربر به چند بخش تقسیم میشود، مثلاً وقتی که یک فایل بزرگ آپلود میشود. سرور با ارسال این کد به کلاینت میگوید که بخش اول درخواست را دریافت کرده و کاربر میتواند به ارسال بخشهای بعدی ادامه دهد.
101 Switching Protocols
کد 101 Switching Protocols به این معناست که سرور با درخواست تغییر پروتکل از سوی کاربر موافقت کرده است. این وضعیت معمولاً زمانی رخ میدهد که کلاینت درخواست تغییر پروتکل از HTTP به یک پروتکل دیگر، مانند HTTPS یا WebSocket، را میدهد. این کد به کلاینت اطلاع میدهد که سرور آماده است تا ارتباط را بر اساس پروتکل جدید ادامه دهد.
102 Processing (WebDAV)
کد 102 Processing یکی از کدهای کمتر شناخته شده 1xx است که در پروتکل WebDAV استفاده میشود. این کد به کلاینت اطلاع میدهد که سرور درخواست را دریافت کرده و در حال پردازش آن است، اما هنوز پاسخی آماده نیست. این کد به خصوص در مواقعی که پردازش درخواست زمانبر است، مفید واقع میشود و از ایجاد تایماوت در کلاینت جلوگیری میکند.
103 Early Hints
کد 103 Early Hints یک کد جدیدتر در مجموعه کدهای وضعیت 1xx است که به سرورها اجازه میدهد تا قبل از ارسال پاسخ نهایی، هدرهای اولیه را به کلاینت ارسال کنند. این کار میتواند به بهبود عملکرد وبسایتها کمک کند، زیرا مرورگر میتواند منابع مورد نیاز را زودتر بارگیری کند. به عنوان مثال، اگر صفحهای شامل فایلهای CSS و JavaScript است، سرور میتواند با ارسال کد 103، به مرورگر اطلاع دهد که این منابع را پیش از دریافت کامل پاسخ، بارگیری کند.
کدهای وضعیت 2xx (موفقیتآمیز)
کدهای وضعیت 2xx در HTTP نشاندهنده این هستند که درخواست کاربر با موفقیت پردازش شده است. این کدها به طور گسترده در ارتباطات روزمره بین کاربران و سرورها استفاده میشوند و نشاندهنده موفقیتآمیز بودن درخواستها هستند. در این بخش، به بررسی مهمترین کدهای وضعیت 2xx خواهیم پرداخت.
200 OK
کد 200 OK یکی از شناختهشدهترین و پرکاربردترین کدهای وضعیت است. این کد به این معناست که درخواست کاربر به درستی پردازش شده و پاسخ (response) شامل منابع درخواستی است. این کد میتواند در پاسخ به انواع مختلفی از درخواستها (GET ،POST ،PUT و غیره) ظاهر شود.
مثال: وقتی شما یک صفحه وب را با موفقیت بارگذاری میکنید، مرورگر شما معمولاً یک کد 200 دریافت میکند.
201 Created
کد 201 Created به این معناست که درخواست کاربر برای ایجاد یک منبع جدید موفقیتآمیز بوده و منبع جدید ایجاد شده است. این کد معمولاً در پاسخ به درخواستهای POST مشاهده میشود.
مثال: اگر شما یک حساب کاربری جدید در یک وبسایت ایجاد کنید، سرور ممکن است با کد 201 پاسخ دهد تا نشان دهد که حساب کاربری با موفقیت ایجاد شده است.
202 Accepted
کد 202 Accepted به این معناست که درخواست دریافت شده اما هنوز پردازش نشده است. این کد معمولاً زمانی استفاده میشود که پردازش درخواست زمانبر است و سرور نمیتواند بلافاصله پاسخ نهایی را ارائه دهد.
203 Non-Authoritative Information
کد 203 Non-Authoritative Information به این معناست که اطلاعات بازگشتی از یک منبع غیر معتبر است. این کد معمولاً زمانی استفاده میشود که یک پراکسی یا سرور میانی اطلاعات را ارائه میدهد که ممکن است با اطلاعات اصلی متفاوت باشد.
204 No Content
کد 204 No Content نشان میدهد که درخواست موفقیتآمیز بوده اما هیچ محتوایی برای ارسال به کاربر وجود ندارد. این حالت معمولاً در درخواستهای PUT یا DELETE دیده میشود که در آنها فقط تغییرات بر روی سرور اعمال میشوند و نیازی به ارسال محتوای جدید نیست.
مثال: اگر شما یک منبع را در سرور بهروزرسانی کنید و سرور با کد 204 پاسخ دهد، به این معناست که عملیات با موفقیت انجام شده اما هیچ محتوایی برای ارسال وجود ندارد.
205 Reset Content
کد 205 Reset Content به این معناست که درخواست موفقیتآمیز بوده و کاربر باید فرم را ریست کند. این کد معمولاً زمانی استفاده میشود که یک فرم یا ورودی در مرورگر باید به حالت اولیه بازگردد.
مثال: بعد از ارسال یک فرم تماس و پردازش موفقیتآمیز، سرور ممکن است با کد 205 پاسخ دهد تا مرورگر فرم را پاک کند.
206 Partial Content
کد 206 Partial Content به این معناست که بخشی از منبع ارسال شده است. این کد معمولاً در پاسخ به درخواستهای محدودهای (Range Requests) استفاده میشود.
مثال: وقتی شما در حال دانلود یک فایل بزرگ هستید و از قابلیت ادامه دانلود استفاده میکنید، سرور ممکن است با کد 206 پاسخ دهد تا نشان دهد که بخشی از فایل ارسال شده است.
207 Multi-Status (WebDAV)
کد 207 Multi-Status در پروتکل WebDAV استفاده میشود و نشاندهنده این است که چندین وضعیت مختلف برای عملیاتهای مختلف در یک درخواست وجود دارد. این کد به همراه یک پیام XML ارسال میشود که وضعیتهای مختلف را توضیح میدهد.
208 Already Reported (WebDAV)
کد 208 Already Reported نیز در پروتکل WebDAV استفاده میشود و نشاندهنده این است که اعضای یک مجموعه قبلاً در پاسخ Multi-Status گزارش شدهاند و نیازی به گزارش مجدد آنها نیست.
226 IM Used (HTTP Delta encoding)
کد 226 IM Used به این معناست که سرور با موفقیت یک درخواست GET را پردازش کرده و پاسخ با استفاده از encoding دلتا ارائه شده است.
کدهای وضعیت 3xx (ریدایرکت)
کدهای وضعیت 3xx نشاندهنده این هستند که کاربر باید عملیات بیشتری انجام دهد تا درخواست نهایی را تکمیل کند، معمولاً به این معنا که کاربر به یک URL جدید هدایت میشود. این کدها به مرورگر یا کلاینت اعلام میکنند که باید یک درخواست جدید به یک آدرس دیگر ارسال شود. در ادامه، مهمترین کدهای وضعیت 3xx را بررسی میکنیم.
300 Multiple Choices
کد 300 Multiple Choices به این معناست که چندین گزینه برای پاسخ وجود دارد و کاربر میتواند یکی از آنها را انتخاب کند. این حالت معمولاً زمانی رخ میدهد که چندین نسخه از یک منبع وجود دارد، مانند فرمتهای مختلف یک ویدئو یا زبانهای مختلف یک صفحه وب.
301 Moved Permanently
کد 301 Moved Permanently نشاندهنده این است که منبع درخواستی به صورت دائمی به یک URL جدید منتقل شده است. مرورگرها به طور خودکار کاربران را به آدرس جدید هدایت میکنند و آدرس قدیمی باید به روزرسانی شود.
مثال: اگر یک صفحه وب به آدرس جدیدی منتقل شود، سرور با کد 301 پاسخ میدهد تا کاربران و موتورهای جستجو آدرس جدید را به خاطر بسپارند.
302 Found
کد 302 Found نشاندهنده این است که منبع موقتاً به یک URL جدید منتقل شده است. برخلاف کد 301، انتقال در این حالت موقت است و URL اصلی ممکن است در آینده دوباره معتبر باشد.
مثال: اگر یک صفحه وب موقتاً در دسترس نباشد و به صفحه دیگری منتقل شود، سرور با کد 302 پاسخ میدهد.
303 See Other
کد 303 See Other به این معناست که درخواست باید به یک URL جدید هدایت شود و معمولاً برای پاسخ به درخواستهای POST استفاده میشود. این کد به کلاینت اطلاع میدهد که باید یک درخواست GET به URL جدید ارسال کند.
304 Not Modified
کد 304 Not Modified نشان میدهد که محتوای منبع درخواستی از آخرین باری که کاربر آن را درخواست کرده، تغییر نکرده است. مرورگر میتواند از نسخه کش شده خود استفاده کند و نیازی به بارگذاری مجدد منبع ندارد. این کد میتواند به بهبود عملکرد وبسایت کمک کند.
305 Use Proxy
کد 305 Use Proxy به این معناست که درخواست باید از طریق یک پروکسی سرور انجام شود. این کد به ندرت استفاده میشود و بسیاری از مرورگرهای مدرن آن را نادیده میگیرند.
307 Temporary Redirect
کد 307 Temporary Redirect مشابه کد 302 است، اما با این تفاوت که روش درخواست (مانند POST یا GET) نباید تغییر کند. این کد نشان میدهد که منبع موقتاً به یک URL جدید منتقل شده است و کاربران باید همچنان از روش اصلی درخواست استفاده کنند.
308 Permanent Redirect
کد 308 Permanent Redirect مشابه کد 301 است، اما با این تفاوت که روش درخواست نباید تغییر کند. این کد نشان میدهد که منبع به صورت دائمی به یک URL جدید منتقل شده است و کاربران باید همچنان از روش اصلی درخواست استفاده کنند.
کدهای وضعیت 4xx (خطای کاربر)
کدهای وضعیت 4xx نشاندهنده این هستند که مشکلی در درخواست کاربر وجود دارد. این کدها معمولاً به این معنا هستند که درخواست به صورت نادرست یا ناقص ارسال شده است و سرور نمیتواند آن را پردازش کند. در این بخش، به بررسی مهمترین کدهای وضعیت 4xx خواهیم پرداخت.
400 Bad Request
این کد به این معناست که درخواست کاربر اشتباه است و سرور نمیتواند آن را پردازش کند. این مشکل ممکن است به دلیل خطاهای نحوی یا اطلاعات نادرست در درخواست باشد.
401 Unauthorized
این کد نشاندهنده این است که کاربر برای دسترسی به منبع درخواستی نیاز به احراز هویت دارد. به عبارت دیگر، کاربر باید وارد سیستم شود یا اطلاعات لاگین معتبر ارائه دهد.
403 Forbidden
این کد به این معناست که دسترسی به منبع درخواستی برای کاربر مجاز نیست، حتی اگر کاربر احراز هویت شده باشد. این مشکل ممکن است به دلیل محدودیتهای دسترسی یا مجوزهای ناکافی باشد.
404 Not Found
این کد یکی از معروفترین کدهای خطا است که به این معناست که منبع درخواستی وجود ندارد. ممکن است URL اشتباه وارد شده باشد یا منبع حذف شده باشد.
کدهای وضعیت 5xx (خطای سرور)
کدهای وضعیت 5xx نشاندهنده این هستند که مشکلی در سرور وجود دارد و درخواست کاربر نمیتواند به درستی پردازش شود. این کدها بیانگر این هستند که درخواست کاربر بهدرستی ارسال شده، اما به دلیل خطاهای داخلی یا مشکلات دیگر، سرور قادر به ارائه پاسخ مناسب نیست. در این بخش، به بررسی مهمترین کدهای وضعیت 5xx خواهیم پرداخت.
500 Internal Server Error
این کد به این معناست که سرور با یک خطای داخلی مواجه شده و نمیتواند درخواست کاربر را پردازش کند. این مشکل ممکن است به دلایل مختلفی از جمله خطاهای برنامهنویسی یا مشکلات سرور باشد.
502 Bad Gateway
این کد نشاندهنده این است که سرور به عنوان یک دروازه یا پروکسی عمل میکند و پاسخ نامعتبری از سرور دیگر دریافت کرده است. این مشکل ممکن است به دلیل مشکلات ارتباطی بین سرورها باشد.
503 Service Unavailable
این کد به این معناست که سرور قادر به پردازش درخواست در حال حاضر نیست. این مشکل ممکن است به دلیل بار زیاد سرور، نگهداری سیستم یا مشکلات دیگر باشد.
504 Gateway Timeout
کد 504 Gateway Timeout نشاندهنده این است که زمان انتظار برای پاسخ از سرور بالادست به پایان رسیده است. این مشکل معمولاً به دلیل کندی یا عدم پاسخگویی سرور بالادست رخ میدهد.
مثال: اگر یک پروکسی سرور نتواند در زمان معقولی از سرور اصلی پاسخ دریافت کند، با کد 504 پاسخ میدهد.
505 HTTP Version Not Supported
کد 505 HTTP Version Not Supported به این معناست که سرور از نسخه HTTP استفاده شده در درخواست پشتیبانی نمیکند. این مشکل ممکن است به دلیل عدم پشتیبانی سرور از نسخههای قدیمی یا جدید پروتکل HTTP باشد.
نتیجهگیری
کدهای وضعیت پاسخ HTTP بخش مهمی از ارتباطات بین کلاینت و سرور را تشکیل میدهند. با درک این کدها، کاربران و توسعهدهندگان میتوانند متوجه شوند که چه مشکلاتی در فرآیند درخواست و پاسخ وجود دارد و چگونه میتوانند آنها را برطرف کنند. در این مطلب به بررسی مهمترین و پرکاربردترین کدهای وضعیت پرداختیم و توضیح دادیم که هر کدام چه معنایی دارند. امیدواریم که این اطلاعات برای شما مفید واقع شود و به شما در درک بهتر فرآیندهای اینترنتی کمک کند.
برای مطالعه کاملتر لیست کدهای وضعیت HTTP میتوانید به مستندات موزیلا مراجعه کنید.