بررسی کدهای وضعیت Http از لحاظ سئو و کشف مشکلات وبسایت دارای اهمیت بسیار بالایی است. به عنوان مثال یک سئو کار باید بداند در صورت حذف یک پست از روی وبسایت چگونه عمل کند و چه کدی را برای موتور جستجوی گوگل ارسال کند یا اینکه در صورت مواجهه با خطای 404 در کنسول جستجو گوگل یا Google Search Console چه راهکاری باید ارائه کند. علاوه بر آن این کدها برای برنامه نویس و توسعه دهنده وبسایت هم گویای بروز یک مشکل در وبسایت است که توسعه دهنده باید خطا بوجود آمده را رفع و از متضرر شدن وبسایت جلوگیری کند.

به طور خلاصه زمانی که آدرس یک وبسایت را در مرورگر تایپ می کنیم و Enter را میزنیم، مرورگر درخواست ما را به سرور می فرستد و سرور هم متناسب با درخواست پاسخ مناسب را مجدد به مرورگر کاربر برمی گرداند. در حالت ایده آل انتظار داریم که محتوای سایت یا آدرسی که زدیم برای ما نمایش داده شود اما همیشه اینطور نیست یعنی در ساده ترین حالت ممکن است درخواست موفقیت آمیز باشد یا موفقیت آمیز نباشد.

اما مرورگر کاربر باید از کجا متوجه می شود که درخواست موفق بوده یا ناموفق؟ پاسخ سوال اینجاست که زمانی که درخواست کاربر به سرور ارسال می شود سرور متناسب با پاسخی که میدهد(مثلا پاسخ موفق، صفحه یافت نشد، صفحه منتقل شده یا بروز خطای فنی) کدی را تحت عنوان کد وضعیت HTTP به سمت مرورگر بر میگرداند و مرورگر با توجه به خطای بوجود آمده پاسخ را به کاربر نشان می دهد.

کدهای وضعیت HTTP شبیه یادداشت های کوتاهی از طرف سروری که وب سایت روی آن قرار دارد به سمت مرورگر کاربر ارسال میشود. این کدها در واقع جزو محتوای سایت محسوب نمی شوند ولی پیامی از سمت سرور به سمت مرورگر کاربر است و همانطور که گفته شد نتیجه در خواست در آن مشخص است.

اگر شما صاحب یک وب سایت هستید و یا توسعه دهنده وب سایت هستید، درک و فهم کدهای وضعیت HTTP برای شما بسیار لازم است است. وقتی بدانیم چه کدی از سمت سرور برای ما ارسال شده برای عیب یابی و یا رفع آن عیب و رفع خطای وبسایت بسیار به ارزشمند است.

در این مقاله چندین فهرست کدهای وضعیت و خطای سرور را بررسی می کنیم و توضیح می دهیم که این کدها چگونه اتفاقات پشت صحنه سرور را مشخص می کند. پس شروع می کنیم…

کدهای وضعیت HTTP چه هستند؟

همانطور که بالا گفته شد زمانی که شما روی یکی لینک یا داخل نوار آدرس مرورگر سایتی را تایپ می کنید و Enter می زنید، مرورگر شما یک درخواست به وب سرور که سایت مورد نظر شما داخل آن است ارسال می کند و تلاش می کند که به آن سایت دسترسی پیدا کند. سروردرخواست را دریافت و آن را پردازش می کند، و سپس داده ها و نتایج مرتبط را به همراه یک هدر یا سرآیند HTTP ارسال ارسال می کند. می توانید نتیجه یک درخواست یا پاسخ سرور را در زیر مشاهده کنید:

HTTP/1.1 200 OK
Connection: Keep-Alive
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Content-Type: text/html; charset=UTF-8
...

همانطور که در بالا مشاهده می کنید کدهای وضعیت HTTP در قالب هدر یا سرآیند HTTP تحویل مرورگر شما می شود. در تمامی درخواست هایی که از طریق مرورگر برای مشاهده سایت ارسال می کند این نوع نتیجه به مرورگر شما ارسال می شود اما شما در حالت معمول آن را نمی بیند و مرورگر آنها را برای شما چاپ نمی کند. درخواست بالا با موفقیت انجام شده و سایت را بدون مشکل میبینید و در واقع سرور کد 200 را برای مرورگر شما که نشان دهنده موفقیت آمیز بودن درخواست است برگردانده.(درباره کد 200 در بخش کدها بیشتر خواهم گفت)

اما زمانی که در درخواست شما خطایی رخ دهد و سرور قصد ارسال خطا به مرور شما را داشته باشد آن زمان است که مرورگر شما برای اینکه شما متوجه خطای بوجود آمده شوید به گونه ای این خطا را به شما نشان داده و توضیحات لازم در باره این خطا را ارائه می دهد. خطاها هم ممکن است متفاوت باشد مثلا خطای گوگل را ببینید.

 کدهای وضعیت HTTP

اما گفتیم که مرورگر به طور معمول کد دریافتی از سرور را به شما نمایش نمی دهد ولی ابزارهای مختلفی این کار را برای شما انجام می دهند. یکی از این ابزارها وبسایت httpstatus.io هست که می توانید یک یا چند آدرس را وارد کنید و کد وضعیت آن ها را بررسی کنید. مثلا در تصویر زیر ما دو آدرس که یک آدرس صحیح و یک آدرسی که وجود ندارد در این ابزار بررسی کرده ایم:

 کدهای وضعیت HTTP

درک کلاس های کدهای وضعیت HTTP

کدهای وضعیت HTTP به 5 دسته، کلاس یا سطح تقسیم می شوند. همانطور که مشخص است با توجه به شباهت معنایی پاسخ گروه بندی شده اند. پس قبل از بررسی دقیق کد ها بهتر است که عملکرد و معنای کلی این کلاس ها را ببینیم.

5 کلاس شامل موارد زیر می شود:

کلاس 100: این کدهای شامل اطلاعای هستند که نشان می دهد درخواست شروع شده توسط مرورگر در حال اجرا و ادامه است.

کلاس 200: وقتی که درخواست مرورگر دریافت شده است و توسط سرور پردازش بشود نتیجه موفقت آمیز به همراه یکی از کدهای این کلاس برگردانده می شود.

کلاس 300: وقتی آدرس درخواستی توسط آدرس جدید جایگزین شده باشد کدهای ریدارکت یا بازگشتی که مربوط به این کلاس هستند برگردانده می شود.

کلاس 400: وقتی کدهای خطای کلاینت اتفاق می افتند نشا می دهد که مشکلی در درخواست رخ داده است که عامل بروز آن مشکل کلاینت یا مروگر است.

کلاس 500: وقتی هم که کدهای خطای سرور برگردانده می شود میفهمیم که درخواست پذیرفته شده اما یک خطا روی خود سرور از تکمیل درخواست جلوگیری کرده است.

در هر کدام از این کلاس ها کدهای متنوعی از سمت سرور ارسال می شود. هر کدام از این کدها معنی و مفهوم خاص خود را دارند، که در ادامه در باره آنها بحث خواهیم کرد.

چرا خطاها و کدهای وضعیت HTTP برای بهینه سازی موتورهای جستجو یا SEO اهمیت دارد؟

ربات های موتور جستجو زمانی که درون وبسایت شما میخزن و سایت شما را بررسی می کنند کدهای وضعیت HTTP را میبینند و درک می کنند. در برخی موارد، خزنده با توجه به کد وضعیت درباره ایندکس کردن و یا چگونه ایندکس کردن این صفحه تصیمی گیری می کند با توجه به کد برگشتی متوجه سالم بودن و یا عیب داشتن سایت یا صفحه شما می شود.

به طور کلی، کدهای وضعیت کلاس های 100 و 200 ضربه زیادی به سئوی سایت شما نمی زنند، در واقع این کدها نشان می دهد که سایت شما همانطوری که باید کار می کند و خزنده های موتورهای جستجو بدون مشکل می توانند سایت شما را بررسی و ایندکس کنند. البته در نظر داشته باشید که این به معنی ارتقاء رتبه سایت یا صفحه شما در گوگل نیست و صرفا به این معنی است که سایت و صفحه شما در رقابت صفحات و نتایج گوگل وجود دارد.

بیشتر بحث در خصوص کد ها روی کلاس هایی است که سئو را دچار مشکل می کند. پاسخ های کلاس 400 و 500 می توانند جلوی ربات های خزنده موتوهای جستجو را بگیرند و باعث شوند که صفحات سایت شما ایندکس نشوند. خیلی از این خطاها می تواند  باعث شود که موتور جستجو محتوای و کیفیت سایت شما را خوب ارزیابی نکند و بنابراین رتبه سایت شما در گوگل دچار افت شود یا حتی ممکن است رتبه خود را از دست بدهید.

کدهای وضعیت کلاس 300 در ارتباط با سئو کمی پیچیده عمل می کنند. اصلی ترین چیزی که در خصوص این کلاس باید بدانید تفاوت بین ریدایرکت موقت و یا دائم است که در آینده در این خصصوص مقاله خواهم نوشت.

بررسی کدهای وضعیت در کنسول جستجو گوگل یا Google Search Console

یک روش مشاهده برای اینکه ببینیم گوگل چطور کدهای وضعیت HTTP ار روی وبسایت شما مشاهده و درک می کند استفاده از کنسول جستجوی گوگل یا Google Search Console است. شما می توانید کدهای وضعیت کلاس 300، 400 و 500 را در بخش گزارش Coverage مشاهده کنید.

این قسمت از پیشخوان چها نوع محتوا را روی سایت شما نشان می دهد:

  • بخش Error: صفحاتی که خطا تولید می کنند
  • بخش Valid With Warning: صفحات تأیید شده که گوگل در باره آنها هشدار می دهد و دارای اشکال هستند
  • بخش Valid: صفحاتی که تأیید شده هستند
  • بخش Excluded: محتوایی که به دلایل مختلف از ایندکس شدن مستثنی شده اند

همانطور که در تصویر بالا مشاهده می کنید ممکن است صفحات با کد وضعیت HTTP را زیر بخش های Excluded، Error و یا Valid With Warning پیدا کنید. خطاها با کد کلاس 400 و 500 غالبا زیر بخش Error مشاهده می شود چون غالبا این کد های یعنی صفحه یا سایت دچار مشکل است.

روش دیگری که برای مشاهده کدهای وضعیت HTTP استفاده می شود ابزار URL Inspection است. با این ابزار اگر گوگل به هر دلیل نتواند صفحه شما ایندکس کند، می توانید دلیل آن را در این بخش جستجو کنید که در این مثال گوگل صفحه مورد نظر را پیدا نکرده و خطای 404 یعنی «صفحه یافت نشد» را دریافت کرده برای همین قادر به ایندکس کردن صفحه نیست:

راهنما و لیست کدهای وضعیت HTTP

هر چند که بیش از 40 کد وضعیت متفاوت سرور وجود دارد با این حال شما با کمتر از 12 تا از کدهای اصلی و مهم سر و کار خواهید داشت. در زیر ما رایج ترین کدهایی که در طول کار با وبسایت یا توسعه و یا حتی سئو با آن ها برخورد خواهید داشت.

کدهای وضعیت 100

کدهای کلاس یا سطح 100 به شما می گوید که درخواستی که به سرور ارسال کرده اید هنوز به دلایلی در حال پردازش است. این کد لزوما یک مشکل نیست. فقط برای اینکه بدانید چه اتفاقی در حال رخ دادن است اطلاعات بیشتری به شما می دهد.

کد وضعیت 100: این کد با عنوان Continue یا ادامه به این معنی است که سرور هدر یا سرآیند مرورگر شما را دریافت کرده است، و هم اکنون برای درخواست بدنه برای ارسال آماده است. این فرآیند درخواست به دلیل جلوگیری از ارسال یک درخواست بدنه که حتی با وجود هدر رد می شود را کارآمد می کند. اجازه بدهید یک مثال بزنم:

تصور کنید یک فرم ارسال فایل دارید که قرار است فایلی با حجم 1 گیگابایت را آپلود کنید، اما بعد از آپلود به سرور می گوید که شما احرازهویت نشده اید و باید وارد شده و مجدد فایل را ارسال کنید. یعنی کل آپلود شما نابود شد. در این شرایط راهکار استفاده از کد وضعیت 100 است. اما در این جا این کد چطور ایفای نقش می کند؟ فقط این نکته مد نظر باشد که فایل شما برای ارسال به منزله بدنه درخواست آپلود شماست.

به طور خلاصه با استفاده از کد 100 مروگر شما ابتدا هدر خود را ارسال می کند و با استفاده از هدر Expect به سرور می گویند که این یک درخواست ادامه دار است و هنوز قرار است بدنه درخواست(مثلا یک فایل) قرار است در درخواست بعدی ارسال شود درصورت نداشتن مشکل کد 100 را برایم بفرست.

PUT /media/file.mp4  HTTP/1.1
Host: api.example.org
Content-Length: 1073741824
Expect: 100-continue

اگر مشکلی وجود داشته باشد مثلا مشکل احراز هویت کلاینت متوجه مشکل شده و دیگر فایل یا بدنه درخواست را ارسال نمیکند اما اگر مشکلی نباشد سرور کد 100 را برای کلاینت یا مرورگر ارسال می کند که به این معنی است که مشکلی وجود ندارد و بدنه درخواست را ارسال کند. اینطور از اتلاف زمان و هزینه جلوگیری می شود. در کد زیر سرور میگوید که مشکلی وجود ندارد و کلاینت کار خود را ادامه دهد:

HTTP/1.1 100 Continue

کد وضعیت 101:  این کد هم با عنوان Switching Protocols یا تغییر پروتکل است و مرورگر از سرور می خواهد که پروتکل ها را تغییر دهد و هدر درخوسات را به روز کند.

کد وضعیت 103: کد Early hints برخی هدرهای را ارسال می کند قبل از اینکه پاسخ سرور آماده باشد در واقع مروگر می تواند منابع را قبل از اینکه پاسخ سرور آماده و ارسال شود را از قبل لود کند.

کدهای وضعیت 200

این بهترین نوع کد وضعیت HTTP است که می توانیم دریافت کنیم. پاسخ های کلاس یا سطح 200 بدین معنی است که  همه چیز همانطور که باید درست کار میکند.

کد 200: این کد یعنی همه چیز درست است. این کد وقتی که یک صفحه وب همانطور که انتظار می رود عمل می کند.

کد 201:  به معنی Created و سرور درخواست مرورگر را انجام می دهد و به عنوان نتیجه یک منبع جدید را معرفی می کند. در واقع به این شکل است که درخواست کاملا موفق بوده ولی در این بین سرور علاوه بر ارسال پیام موفق آمیز بودن درخواست باید یک آدرس جدید هم در نتیجه درخواست در پارامتر Location ارسال کند اما قبل از ارسال پاسخ باید منبع یا منابع جدید از قبل وجود داشته باشد یا ایجاد شود.

یک مثال ساده: شما قرار است به سرور درخواست دانلود یک فایل از یک سایت خارجی را بدهید و قرار است پس از اتمام دانلود فایل در مکانی در سرور ذخیره شود و در همان درخواست هم محتوای فایل برای کلاینت ارسال شود و علاوه بر آن آدرس محل ذخیره شده را هم در اختیار شما بگذارد. در این حالت علاوه بر دانلود و ذخیره سازی در محل مورد نظر محتوای فایل به همراه آدرس ذخیره شده برای شما ارسال می شود.

HTTP/1.1 201 Created
Date: Sat, 02 Apr 2020 12:22:40 GMT
Location: /videos/2020/12/5u12kpaa.mp4
Content-Type: text/html

your file save!
Click <A href="/videos/2020/12/5u12kpaa.mp4">here</A> to view it.

کد 202: «Accepted» سرور درخواست مرورگر را پذیرفته اما هنوز در حال پردازش آن است. اما درخواست ممکن است موفقیت آمیز باشد یانه! و معمولا برای درخواست هایی که پردازش زمان بر دارند استفاده می شود.

مثال: ما درخواست یک کار سنگین را که 10 دقیقه طول می کشد را به سمت سرور میفرستیم. خب قطعا نمیتوانیم منتظر نتیجه باشیم. در این حالت سرور بلافاصله کار را در صف پردازش قرار می دهد و کد 202 را برای ما میفرستد. و معمولا در این حالت آدرسی معرفی می شود که میتوانیم در درخواست های متوالی وضعیت این کار را از سرور جویا شویم. مثلا ما یک درخواست به سرور فرستادیم:

HTTP STATUS 202 (Accepted)
 
{
    "task": {
        "href": "/api/company/job-management/jobs/2130040",
        "id": "2130040"
    }
}

سرور با کد 202 به ما میگویند که کار به صف پردازش ارسال شده و می توانید با این شناسه و ادرس اینترنتی وضعیت کار خود را بررسی کنید. که نمونه این حالت هم در زیر میبینید:

اول: پردازش هنوز شروع نشده

{
   "job" : {
     "@uri" : "/api/company/job-management/jobs/2130040" ,
     "id" : "2130040",
     "name" : "Update Resource",
     "job-state" : "SCHEDULED",
     "job-status" : "UNDETERMINED",
     "percent-complete" : "0",
     "scheduled-start-time" : "01-01-2013 10:50:45 PM GMT",
     "start-time" : "",
     "end-time" : "",
     "owner" : "Admin",
     "summary" : "random text"
   }
}

دوم: 30درصد پردازش انجام شده

{
   "job" : {
     "@uri" : "/api/company/job-management/jobs/2130040" ,
     "id" : "2130040",
     "name" : "Update Resource",
     "job-state" : "STARTED",
     "job-status" : "INPROGRESS",
     "percent-complete" : "30",
     "scheduled-start-time" : "01-01-2013 10:50:45 PM GMT",
     "start-time" : "01-01-2013 10:50:55 PM GMT",
     "end-time" : "",
     "owner" : "Admin",
     "summary" : "random text"
   }
}

سوم: پردازش تکمیل شده

{
   "job" : {
     "@uri" : "/api/company/job-management/jobs/2130040" ,
     "id" : "2130040",
     "name" : "Update Resource",
     "job-state" : "COMPLETED",
     "job-status" : "SUCCESS",
     "percent-complete" : "100",
     "scheduled-start-time" : "01-01-2013 10:50:45 PM GMT",
     "start-time" : "01-01-2013 10:50:55 PM GMT",
     "end-time" : ""01-01-2013 10:52:18 PM GMT",
     "owner" : "Admin",
     "summary" : "random text"
   }
}

کد 203: «Non-Authoritative Information» این کد وضعیت ممکن است زمانی که پراکسی در حال استفاده است رخ دهد. به این معنی که سرور پراکسی یک وضعیت کد 200 را از سرور اصلی دریافت کرده است، اما قبل از ارسال آن به مرورگر شما پاسخ را تغییر داده و یا محدود کرده است است.

کد 204: «No Content» یعنی درخواست با موفقت انجام شده اما هیچ محتوایی وجود ندارد که برای شما ارسال شود.

کد 205: وضعیت Reset Content به این معنی که مرورگر باید بخش نمایش خود یا view را به روز کند. در یک مثال ساده سرور با کد 205 به مروگر می گویند که برای درخواست بعدی داده های فرم را حذف کن و کاربر بدون درد سر شروع به ثبت داده جدید می کند.

کد 206: وضعیت Partial Content یا بخشی از محتوا به این معنی است که درخواست موفق بود اما سرور فقط بخشی از محتوا را برای مرورگر ارسال کرده است. این نوع درخواست معمولا زمانی رخ می دهد که سرور از هدر «range headers» استفاده کند. این کار مرورگر را قادر می سازد تا دانلود ها را متوقف و مجدد ادامه داد و نرم افزارهای دانلود به عنوان Http Client به شدت از این هدر و وضعیت استفاده می کنند تا بتوانند امکان متوقف و ادامه دادن دانلود را به کاربر بدهند و همچنین همزمان بتوانند دانلود را در بخش های جداگانه دانلود و در آخر به یک فایل تبدیل کنند.

مثال دیگر اجرای فایل های صوتی و ویدئویی است و استفاده از هدر range content و کد 200 این امکان را می دهد که کاربر هر دقیقه و ثانیه از ویدئو را که خواست کلیک کند و همانجا را مشاهده کند. زمانی که از یک فیلم یک ساعته در ابتدا روی دقیقه 40 کلیک می کنید نیازی نیست تا صبر کنید که فیلم دانلود شود، بلکه مرورگر درخواستی را به سرور میفرستد که محتوای همان دقیقه 40 را برای مرورگر ارسال کند. یک نمونه از هدر Range Content:

Content-Range: bytes 200-1000/67589 

کدهای وضعیت 300

ریدایرکت فرآیندی است که برای ارتباط با صفحاتی که به مکان جدید منتقل شده اند استفاده می شود. در خصوص ریدایرکت هم چند کد وضعیت همراه ریدایرکت وجود دارد که برای بازدیدکننده در خصوص  مجتوایی که به دنبال آن است توضیح می دهد.

کد 300: وضعیت Multiple Choices یا حالت چند انتخابی. گاهی  ممکن است پاسخ به یک درخواست بیشتر از یک نتیجه داشته باشد و مروگر، کلاینت یا کاربر باید تصمیم بگیرد که به کدام صفحه ریدایرکت شود. به این مثال توجه کنید:

HTTP/1.1 300 Multiple Choices
Server: curveball/0.3.1
Access-Control-Allow-Headers: Content-Type,User-Agent
Access-Control-Allow-Origin: *
Link: </foo> rel="alternate"
Link: </bar> rel="alternate"
Content-Type: text/html
Location: /foo

در این مثال سرور میگوید دو آدرس برای ریدایرکت وجود دارد که کلاینت باید انتخاب کند که به کدام یک میخواهد انتقال پیدا کند. در همین راستا میتوان با استفاده از جاوا اسکریپت(البته در اینجا جی کوئری) پیام انتخاب برای ریدارکت شدن را به کاربر نشان داد و در خط ششم طی یک انتخاب از کاربر درخواست میکنیم که مسیر ریدایرکت خود را انتخاب کند.

$.ajax({
    url: theURL,
    success: function(response, status, xhr) {
        var link = xhr.getResponseHeader('Link');
        if(link != null) {
            // my second ajax request to the link in the MyRedirectLocationHeader
        }
    }
});

کد 301: این کد نشان می دهد که فایل یا صفحه درخواستی وجود دارد ولی به طور کامل از آدرس قبلی به آدرس جدید منتقل شده است. در این شرایط موتور جستجو آدرس جدید را ملاک قرار داده و آدرس قبلی را حذف خواهد کرد.

کد 302: گاهی به دلایلی یک صفحه فقط برای مدتی قرار است به آدرس جدیدی منتقل شود اما پس از مدتی مجدد به آدرس قبلی خود برگردد و یا مطلبی را موقت حذف کردیم و موقت به یک آدرس جدید آن را هدایت می کنیم. در این شرایط کد 302 یا انتقال موقت در پاسخ فرستاده می شود. در این شرایط موتور جستجو به طور موقت آدرس جدید را ملاک قرار داده ولی از لیست جستجوی خود آن را حذف نمی کند تا مجدد صفحه به مکان قبلی خود برگردد.

کد 303: درک وضعیت 303 نیازمند این است که تفاوت بین چهار روش اصلی درخواست HTTP یعنی GET، POST، HEAD و PUT را بدانید. اساسا ;د 303 به مرورگر شما می گوید که صفحه یا فایلی که مرورگر درخواست کرده با روش های درخواست POST، PUT و یا DELETE پیدا شده. هر چند برای دریافت آنچه مد نظر شماست باید متد مورد نیاز را استفاده کنید.

کد 304: منبع یا فایل درخواستی شما از آخرین باری که آن را دریافت کرده اید تغییری نداشته است. این کد به مرورگر میگویند که این فایل در کش مرورگر ذخیره شده و هیچ تغییری نداشته است و مرورگر برای افزایش سرعت، دوباره آن را دانلود نمی کند و از فایل موجود در کش استفاده می کند.

کد 307: انتقال موقت. این کدعملکردی شبیه کد 302 دارد اما بر خلاف کد 302 اجازه تغییر روش درخواست HTTP را نمی دهد زیرا به طور کلی در کد های 301 و 302 اکثر کلاینت ها درخواست POST را به GET تبدیل و به آدرس جدید ارسال می کنند.

کد 308: انتقال دائم: این کد هم عملکری شبیه کد 301 دارد. اما اجازه تغییر روش درخواست HTTP را نمی دهد و نشان می دهد که منبع درخواستی به طور کامل در آدرس جدید قرار گرفته است.

کدهای وضعیت 400

کدهای سطح 400 کدهایی هستند که مشکل را نشان می دهد و به شما می گوید که یک مشکل خاص در مرورگر یا درخواست شما وجود دارد.

کد 400: درخواست بد یا Bad Request، سرور به خاطر بروز خطا در سمت کلاینت نمی تواند پردازش انجام دهد و پاسخی برگرداند مثلا به علت نگارش یا سینتکس اشتباه در درخواست، اندازه خیلی بزرگ و …

کد 401: درخواست غیر مجاز است یا نیاز به احراز هویت دارد. زمانی که دسترسی به آدرس یا فایل خاص فاقد احراز هویت باشد سرور این خطا را برمی گرداند. یکی از مثال ها رمز گذاری روی پوشه های خاص روی سرور است.

 کدهای وضعیت HTTP

کد 402: نیازمند پرداخت، در اصل این کد برای استفاده به عنوان بخشی از سیستم پرداخت ایجاد شده است. هر چند این پلن هیچگاه دنبال نشد. به جای آن از پلتفرم های مختلف استفاده شده اس تا درخواستی که نمی تواند بعلت عدم پرداخت انجام شود را نشان دهد.

کد 403: دسترسی به منبع مربوطه ممنوع می باشد. زمانی که کاربر قصد دسترسی به چیزی که شما اجازه برای مشاهده آن نداده اید را دارد این خطا نشان داده می شود. به عنوان مثال تلاش برای محتوای رمزگذاری شده بدون ورود می تواند خطای 403 تولید کند.

کد 404: آدرس یا فایل درخواستی یافت نشد، این خطا رایج ترین تمام خطاهاست. معنی این کد این است که آدرس درخواستی وجود ندارد.

کد 405: عدم اجازه روش درخواستی، این خطا زمانی تولید می شود که سرور میزبان(سرور اصلی) روش درخواست را پشتیبانی می کند اما آدرس یا فایل هدف در آن روش درخواستی موجود نیست یا به عبارت دیگر آدرس مورد وجود دارد اما منطبق با متد یا روش درخواستی کلاینت نیست.

کد 406: پاسخ سرور توسط کلاینت غیر قابل پذیرش است. زمانی که اتفاق می افتد که نوع پاسخی که توسط سرور تولید می شود بر اساس هدر درخواست توسط کلاینت قابل پذیرش نیست. به عنوان مثال زمانی که کلاینت در پارامتر Accept هدر درخواست خود می گوید که فقط متن نوع text/html را قبول می کند اما نوع خروجی در سمت سرور از نوع application/json است این خطا رخ می دهد.

کد 407: احراز هویت پراکسی مورد نیاز است، یک سرور پراکسی در حال استفاده است و مرورگر برای ادامه کار خود نیازمند احراز هویت است.

کد 408: خطای تایم اوت و یا اتمام زمان انتظار سرور برای دریافت درخواست کلاینت. زمانی که سرور منتظر می ماند تا ارسال درخواست کلاینت به سمتش کامل شود. به عبارت دیگر سرور درخواست کامل کلاینت را دریافت نکرده و خطای 408 را تولید می کند. یکی از دلایلی که ممکن است باعث بروز این خطای شود گم شدن بسته های داده بین مرورگر و سرور است.

کد 409: تداخل، یک کد وضعیت 409 به این معنی است که سرور نمی تواند درخواست مرورگر را به دلیل تداخل بین منابع یا صفحات پردازش کند. گاهی به دلیل ویرایش های همزمان این اتفاق رخ می دهد.

کد 410:  اصطلاحا به این کد Gone هم گفته می شود و به این معنی است که صفحه یا فایل درخواستی از بین رفته و بر نخواهد گشت، این خطا شبیه خطای 404 یا «Not Found» است با این تفاوت که 410 به کلاینت یا خزنده موتورهای جستجو می گوید که این فایل را خودمان برای همیشه حذف کردیم.

کد 411: طول لازم، یه این معنی که منبع درخواستی نیازمند این است که کلاینت یک طول مشخص تعیین کند اما این کار را نکرده است.

کد 412: خطای پیش شرط، مرورگر شما دارای شرایط معین در خواست هدرش است و سرور آنها را برآورده نکرده است.

کد 413: ظرفیت انتقال خیلی بزرگ است یا موجودیت درخواست خیلی بزرگ است، درخوسات شما بزرگتر از آن است که سرور قادر یا مایل به پردازش آن باشد است. در مثال زیر تصویر پروفایل برای آپلود باید حداکثر 1 مگابایت باشد اما کلاینت یک فایل بزرگتر را ارسال کرده است:

HTTP/1.1 413 Payload Too Large
Content-Type: text/html

<p>This endpoint does not support requests larger than 1MB</p>

کد 414: آدرس Url خیلی طولانی است، معمولا درخواست GET که به صورت کوئری استرینگ کد شده باشد برای اینکه سرور آن را پردازش کند خیلی بزرگ است.

کد 415: نوع رسانه پشتیبانی نمی شود، درخواست شامل نوع رسانه است که سرور یا منبع پشتیبانی نمی کند.

کد 416: دامنه درخواستی صحیح نیست، درخواست شما برای یک بخشی از منبع ای است که سرور قادر به برگشت آن نیست. به عنوان مثال شما درخواست دامنه 2000 تا 3000 یک فایل 1024 بایتی را داده اید و به دلیل عدم وجود همچنین دامنه ای خطای 416 از سمت سرور دریافت می شود:

HTTP/1.1 416 Range Not Satisfiable
Content-Range: bytes */1000

کد 417: Expectation Failed، زمانی که سرور از پارامتر هدر Expect پشتیبانی نکند و یا نوع آن را درک نکند این خطا رخ میدهد. یک مثال استفاده شده را در بررسی کد وضعیت 100 مثال زدیم.

کد 429: با عبارت Too many redirects متوجه می شویم که مرورگر در داخل یک حلقه ریدایرکت گیر افتاده و تعداد ریدایرکت از حد عادی فراتر رفته است. این اتفاق می تواند گاهی اوقات در زمانی که ربات ها و اسکریپت ها تلاش می کنند تا به سایت شما دسترسی یابند رخ دهد. گاهی این اتفاق با اشتباه در کد htaccess نیز ممکن است رخ دهد.

به عنوان مثال در زیر هدر پاسخ خطایی را با تعداد 3600 ریدایرکت را به ما گزاش می دهد:

HTTP/1.1 429 Too Many Requests
Content-type: text/html
Retry-After: 3600

کد وضعیت 500

کدهای سطح 500 که خطا هم در نظر گرفته می شوند. هر چند آنها مشکلی که روی سرور اتفاق افتاده را گزارش می دهند ولی رفع این خطاها همچنان مشکل است باشد.

کد 500: خطایی روی سرور رخ داده و درخواست نمی تواند کامل شود. معنای ساده این کد به صورت کلی «خطای داخلی سرور» است. گاهی اوقات روی سرور اشتباهی رخ می دهد و منابع درخواست شده تحویل داده نمی شوند. این کد معمولا توسط افزونه هایی که روی سرور اضافه شده اند رخ می دهد، مثل فایل php مشکل دار یا حتی اشکال ارتباط با پایگاه داده.

کد 501: این خطا زمانی رخ می دهد که سرور از عملکرد مورد نیاز برای اجرای درخواست پشتیبانی نمی کند. به عبارت دیگر یک پاسخ مناسب برای زمانی که سرور نمی تواند روش درخواست را تشخصیص دهد و نمی تواند از آن برای هیچ کدام از آدرس ها وفایل ها و منابع پشتیبانی کند. این مشکل تقریبا همیشه توسط خود میزبان و پشتیبانی فنی آن رفع می شود پس اگر به این مشکل خوردید حتما با پشتیبانی هاست خود تماس بگیرید.

کد 502: عبارت Bad Gateway یا دروازه بد به این معنی است که سرور پاسخ اشتباه از دیگری دریافت کرده، به عنوان مثال وقتی از یک سرور پراکسی استفاده می شود. در زمان های دیگر یک کوئری یا درخواست طولانی مدت می شود و توسط سرور کنسل یا نابود می شود و ارتباط با دیتابیس به مشکل می خورد.

کد 503: سرور برای اینکه این درخواست را انجام دهد فعلا در دسترس نیست. درخواست نمی تواند در این نقطه زمانی کامل شود. این کد ممکن است توسط یک سرور که تمام منابع آن اشغال شده و نمی تواند درخواست اضافه را اجرا کند برگردانده می شود.

کد 504: سرور به عنوان یک گذرگاه عمل می کند و زمان انتظار سرور برای دریافت پاسخ از سرور دیگر به اتمام رسیده. این کد زمانی برگردانده می شود که دو سرور با مشارکت هم یک درخواست را انجام دهند و مدت زمان مورد انتظار سرور اول برای پاسخ از سرور دوم به پایان رسیده است.

کد 505: نسخه HTTP پشتیبانی نمی شود. سرور نمیتواند نسخه HTTP کلاینت را برای انجام درخواست پشتیبانی کند.

کد 511: شبکه نیاز به احراز هویت دارد. این کد وضعیت زمانی ارسال می شود که شبکه در حال تلاش برای استفاده از فرم احراز هویتی که قبلا باید به همراه درخواست با سرور ارسال شود. به عنوان مثال شما نیاز به موافقت برای شرایط و قوانین عمومی یک وایفای هاست اسپات نیاز دارید.

کد 521: سرور در دسترس نیست. این خطای مخصوص کلودفلیر است. به این معنی که کلاینت یا مرورگر می تواند با موفقیت به سرور کلود فلیر متصل شوند اما سرور کلود فلیر نمی تواند به سرور اصلی متصل شود.

از کجا درباره کدهای وضعیت HTTP بیشتر مطالعه داشته باشیم؟

شناخت کدهای وضعیت می تواند به رفع برخی مشکلاتی که در وبسایت، مرورگر یا سرور بوجود می آند چه به عنوان یک توسعه دهنده و چه به عنوان مدیر سایت کمک کند.

خلاصه

هر چند که این کدها ممکن است به نظر گیج کننده به نظر برسند اما کدهای وضعیت HTTP خیلی پرمعنی و مفید هستند. با یادگیری کدهای رایج می توانید مشکلات سایت خود را به سرعت شناسایی و در جهت رفع آن اقدام کنید.

در این پست ما حدود 40 کد وضعیت HTTP را معرفی کردیم. از کدهای سطح 100 و 200 که مشکل ایجاد نمی کنند تا کدهای 400 و 500 که می توانند مشکلات زیادی برای سئو، درآمد و اعتبار سایت ایجاد کنند. شناخت پیام این کدهای می تواند از مشکلات و ضرور مالی و اعتباری جلوگیری کند.

پکیج کامل آموزش بهینه سازی سایت برای موتور جستجو-SEO

منبع: کینستا