آموزش رفع خطای HTTP ERROR 304 Not Modified (راهنمای تصویری)
کد وضعیت 304 مرتبط با خطای HTTP Not Modified است و نشان دهنده یک مشکل ارتباطی بین مرورگر کاربر و سرور وب سایت است. اگر شما یا کاربرانتان به این کد وضعیت در سایت خود برخورد کنید، این وضعیت می تواند دسترسی به محتوای شما را به طور کامل مسدود کند. ما در این مقاله به شما نحوه رفع این خطا را خواهیم آموخت.
از آنجایی که این خطا می تواند در سمت سرور یا سمت سرویس گیرنده (کلاینت) باشد، کشف منبع مشکل می تواند کمی زمان ببرد. خوشبختانه، چندین تکنیک بیخطر برای عیبیابی خطای HTTP 304 Not Modified وجود دارد. در این پست، ما در مورد کد های وضعیت HTTP بحث خواهیم کرد و توضیح خواهیم داد که کد وضعیت HTTP 304 چیست. سپس شما را از طریق شش روشی که شما (یا بازدیدکنندگانتان) میتوانید برای رفع این ارور استفاده کنید، راهنمایی میکنیم.
مقدمه ای بر کد های وضعیت HTTP
برای درک خطای HTTP 304، ابتدا به درک کدهای وضعیت می پردازیم. به زبان ساده، هر بار که درخواستی از مرورگر خود می کنید – مانند دسترسی به یک وب سایت خاص – یک کد وضعیت HTTP بین مرورگر شما و سرور به منظور تبادل اطلاعات ارسال می شود.
بیش از 40 کد وضعیت مختلف وجود دارد که می تواند در این ارتباط دخیل باشد. با این حال، تنها تعداد انگشت شماری کد وضعیت وجود دارد که احتمالاً مستقیماً با آن ها روبرو خواهید شد. وقتی شما با یک کد وضعیت مواجه می شوید، معمولاً به این معنی است که مشکلی پیش آمده است.
کد های وضعیت HTTP در یکی از پنج دسته ای قرار می گیرند که بین 100 و 500 شماره گذاری می شوند. هر سری یک نوع مشکل را نشان می دهد. به عنوان مثال، کدهای خطایی که در دسته 400 قرار می گیرند، مانند خطای 404 Not Found و “خطای “401”، معمولاً به این معنی است که مشکلی در زمینه درخواست وجود دارد و وب سایت یا صفحه مورد نظر غیرقابل دسترسی است.
از سوی دیگر، کد های دسته 300 – مانند کد وضعیت HTTP 304 Not Modified که در این پست روی آن تمرکز خواهیم کرد – کدهای تغییر مسیر هستند. آن ها روشن می کنند که اطلاعات درخواست شده به طور موقت یا دائم با منبع دیگری جایگزین شده است. هنگامی که با یکی از این کدهای وضعیت روبرو می شوید، به این معنی است که اقدامات بیشتری باید انجام شود.
کد وضعیت HTTP 304 چیست؟
خطای HTTP 304 که گاهی اوقات با نام 304 Not Modified نیز شناخته میشود، کدی است که به مرورگر شما میگوید: «منبع درخواستی از آخرین باری که به آن دسترسی داشتید تغییر نکرده است.»
سازمان IETF خطای 304 Not Modified را اینگونه تعریف می کند:
کد وضعیت 304 نشان می دهد که یک درخواست مشروط GET یا HEAD دریافت شده است و اگر این واقعیت به دلیل نادرست بودن شرایط نبود، منجر به یک پاسخ 200 (OK) می شود. به عبارت دیگر، نیازی به انتقال نمایشی از منبع هدف برای سرور نیست، زیرا درخواست نشان میدهد کلاینتی که درخواست را مشروط کرده است، قبلاً یک نمایش معتبر دارد. بنابراین سرور کلاینت را هدایت می کند تا از آن نمایش ذخیره شده استفاده کند، مانند زمانی که یک پاسخ 200 (OK) داشته است.
IETF
اساساً، سرور شما به مرورگر شما (یا بازدیدکننده) می گوید که منابع ذخیره شده (در حافظه کش یا پنهان) در مرورگر از آخرین باری که از آن صفحه بازدید کردهاید، اصلاح نشده است. به نوبه خود، مرورگر شما یک نسخه ذخیره شده از صفحه وب را از حافظه cache بازیابی می کند. هدف از این کار بهبود سرعت و تحویل صفحه، با جلوگیری از بارگیری مکرر اطلاعات مشابه توسط مرورگر شما است.
درک درخواست های HTTP 304
وقتی مرورگر شما منبعی را در حافظه پنهان ذخیره میکند، اطلاعاتی را که «Last-Modified header» نامیده میشود را نگه میدارد. این اطلاعات از سرور ارسال شده است. اگر یک مرورگر درخواستی برای یک صفحه وب دریافت کند که یک نسخه از آن ذخیره شده است، اما نداند که آخرین نسخه را دارد یا خیر، یک درخواست «تأیید اعتبار مشروط» به سرور ارسال می کند.
مرورگر تاریخ و زمان «آخرین اصلاح» را برای کپی منبعی که در اختیار دارد، از طریق هدر «If-Modified-Since» یا «If-None-Match» به سرور ارسال می کند. سرور این هدر ها را بررسی می کند و همچنین به مقدار ETag نگاه می کند. دومی یک شناسه منحصر به فرد است که برای تعیین نسخه یک منبع خاص استفاده می شود.
اگر مقادیر این فایل ها یکسان باشد که موضوع خطای مورد نظر ماست، سرور هدر پاسخ HTTP 304 Not Modified را ارسال می کند و مرورگر از کپی ذخیره شده منبع استفاده می کند. اگر کپی مرورگر قدیمی باشد، به این معنی است که فایل از آخرین درخواست تغییر کرده است، یک کد HTTP 200 ارسال می کند و یک کپی جدید استفاده می شود.
متأسفانه، چند مشکل وجود دارد که ممکن است باعث مشاهده پاسخ HTTP 304 در زمانی که قرار نیست رخ دهد، شود. شایع ترین علل عبارتند از:
- مشکلات مربوط به پیکربندی سرور یا سرور نام دامنه (DNS)
- یک منبع ذخیره شده در حافظه پنهان که آلوده یا خراب است (به عنوان مثال، بدافزار یا ویروس هایی که مرورگر را تحت تأثیر قرار می دهند)
کد وضعیت 304 می تواند به دلیل مشکل در سمت سرور یا سمت سرویس گیرنده باشد، بنابراین ممکن است برای تشخیص و رفع آن نیاز به عیب یابی باشد.
روش های رفع خطای HTTP 304 Not Modified
روش هایی که می توانید برای حل کد وضعیت HTTP 304 استفاده کنید، از ساده تا نسبتاً فنی متفاوت است. همانطور که می دانید موتور های جستجو مسئول ایندکس کردن و ذخیره سازی وب سایت ها هستند، بنابراین این مشکل معمولاً به مرورگر مورد استفاده برای دسترسی به سایت ردیابی می شود.
البته، برای تعمیر مرورگر افرادی که سعی در دسترسی به سایت شما دارند، کار های زیادی می توانید انجام دهید. با این حال، درک اینکه چه چیزی ممکن است باعث این مشکل برای بازدیدکنندگان شود، می تواند مفید باشد، چه زمانی که سعی می کنید راه حلی پیدا کنید یا زمانی که مستقیماً با آن ها سر و کار دارید.
1. پاک کردن داده های کش مرورگر
در روش اول رفع خطای HTTP 304 Not Modified ابتدا داده های مرورگر خود را پاک می کنیم. پاک کردن داده های مرورگر خود برای پاک کردن حافظه کش ممکن است به دسترسی به URL مورد نظر کمک کند. این کار شامل حذف تمام دادههای مرورگر، کوکیها و اطلاعات حافظه پنهان است.
دستورالعملهای اجرای این فرآیند بسته به مرورگری که استفاده میکنید متفاوت است. اگر هنوز نمی دانید که مرورگر ها چگونه فرآیند کش کردن را انجام می دهند، به راهنمای ما در مورد فرآیند کش کردن مرورگر ها مراجعه کنید.
2. نصب بدافزار
مرورگر های ناسالمی که به ویروس یا بدافزار آلوده شده اند ممکن است دلیل این خطا باشند. بنابراین، ایده خوبی است که یک اسکن روی سیستم خود اجرا کنید. انجام این کار میتواند به شناسایی و حذف هر گونه مشکلی که ممکن است در درخواست HTTP، از جمله برنامههای افزودنی مشکلساز، وقفه یا تداخل داشته باشد، کمک کند.
اگر از نسخه ویندوز کروم استفاده می کنید، می توانید اسکنر بدافزار و ابزار پاکسازی داخلی آن را اجرا کنید. برای انجام این کار، ابتدا مطمئن شوید که آخرین نسخه کروم را اجرا می کنید. با باز کردن یک برگه جدید و کلیک بر روی نماد منو و سپس درباره Chrome می توانید از نسخه کروم خود مطلع شوید.
اگر مرورگر شما به نسخه فعلی به روز نشده است، می توانید آن را در همان مکان حل کنید. سپس، یک تب جدید کروم را باز کنید و «chrome://settings/cleanup» را در نوار URL وارد کنید. Enter را بزنید و سپس در کنار Find and remove harmful software روی دکمه Find کلیک کنید:
اسکنر شروع به کار می کند، سپس نتایج را گزارش می دهد.
متأسفانه برخی از مرورگر های دیگر مانند فایرفاکس و edge و همچنین سیستمعاملهای macOS و Linux نسخههای خود را از این ابزار داخلی ارائه نمیکنند. در عوض، باید یک اسکن بدافزار را با استفاده از نرم افزار آنتی ویروس روی رایانه خود اجرا کنید.
3. غیر فعال کردن افزونه های مرورگر
افزونههای مرورگر شما نیز ممکن است آلوده شده و در درخواستها و ارتباط سرور اختلال ایجاد کنند. به همین دلیل ممکن است بخواهید آن ها را نیز غیرفعال کنید. میتوانید این کار را با باز کردن منوی Chrome و رفتن به تنظیمات > برنامههای افزودنی انجام دهید:
در صفحه افزونهها، میتوانید هر کدام را با کلیک کردن بر روی کلید مربوطه غیرفعال کنید. همچنین می توانید افزونه های استفاده نشده یا قدیمی را از طریق دکمه Remove حذف کنید:
باز هم، این فرآیند بسته به مرورگر شما کمی متفاوت خواهد بود. هدف این است که هر برنامه افزودنی را به صورت دستی حذف یا غیرفعال کنید و سپس بررسی کنید که آیا خطای HTTP 304 Not Modified حل می شود یا خیر. سپس، می توانید سعی کنید آن ها را یک به یک برگردانید.
4. DNS را بررسی کنید و TCP/IP را ریست کنید
اگر مشکل در این مرحله حل نشده باشد، ممکن است مشکلی در تنظیمات DNS وجود داشته باشد. به عنوان مثال، استفاده از یک آدرس IP قدیمی ممکن است باعث ایجاد کد وضعیت HTTP 304 شود. بنابراین، روش دیگر برای رفع این مشکل بررسی DNS و تنظیم مجدد TCP/IP است.
با کروم، میتوانید با وارد کردن «chrome://net-internals/#dns» در یک برگه جدید، DNS مرورگر را پاک کنید. Enter را زده و سپس بر روی دکمه Clear host cache کلیک کنید:
همچنین می توانید DNS را پاک کرده و TCP/IP را در سیستم عامل خود بازنشانی کنید.
5. استفاده از DNS عمومی گوگل را امتحان کنید
یکی دیگر از دلایل احتمالی آدرس DNS نادرست است. بنابراین، ارزش استفاده از Google Public DNS را دارد تا ببینید آیا این مشکل را حل می کند یا خیر. در ویندوز، می توانید این کار را با فشار دادن کلیدهای Win + R انجام دهید. در پنجره Run که ظاهر می شود، “ncpa.cpl” را در کادر فرمان تایپ کنید و سپس Ok را بزنید. برای اطلاعات بیشتر می توانید به مقاله بهترین DNS رایگان ما مراجعه کنید.
در پنجره Network Connections که در مرحله بعد باز می شود، محل اتصال شبکه ای را که استفاده می کنید پیدا کرده و روی آن کلیک راست کنید. سپس Properties را انتخاب کنید:
از آنجا روی Internet Protocol Version 4 دوبار کلیک کنید. سپس گزینه «Use the following DNS server addresses» را انتخاب کنید، سپس مقدار «8.8.8.8» را در قسمت ترجیحی و «8.8.4.4» را در قسمت جایگزین وارد کنید:
وقتی کارتان تمام شد، روی Ok کلیک کنید. سپس سیستم خود را مجددا راه اندازی کنید و دوباره سعی کنید به وب سایت دسترسی پیدا کنید تا مجددا بررسی کنید خطای HTTP 304 Not Modified نمایش داده می شود یا خیر.
برای تغییر تنظیمات سرور DNS با استفاده از macOS، باید به Apple > System Preferences > Network بروید:
در پنجره ای که باز می شود، اتصال خود را انتخاب کنید، سپس روی Advanced و سپس تب DNS کلیک کنید:
روی نماد + در کنار آدرس های IPv4 یا IPv6 کلیک کنید تا آدرس های موجود را با IP های عمومی Google جایگزین کنید.
6. بررسی فایل های پیکربندی سرور برای دستورالعمل های تغییر مسیر نادرست
خطای HTTP 304 Not Modified ممکن است به دلیل مشکلات مربوط به سرور و مشتری رخ دهد. اگر هیچ یک از روشهایی که تاکنون پوشش دادهایم مشکل شما را اصلاح نکرده است، ممکن است فایلهای پیکربندی سرور شما مقصر باشند. برای مثال، ممکن است دستورالعملهای تغییر مسیر نادرستی وجود داشته باشد.
فرآیند بررسی فایل های پیکربندی سرور شما بستگی به این دارد که از Nginx یا Apache استفاده می کنید. همچنین یکی از بخش هایی که باید بررسی کنید. لاگ ارور های به وجودآمده در سرور شماست که ممکن است کمک کننده باشد.
اگر سرور شما روی آپاچی اجرا می شود، باید فایل htaccess. را در دایرکتوری root سایت خود جستجو کنید. می توانید این کار را با وارد شدن به File Manager حساب میزبانی خود و رفتن به پوشه public_html انجام دهید. هنگامی که آن فایل را باز کردید، به دنبال بخش mod_cache ماژول باشید. باید چیزی شبیه به این باشد:
LoadModule cache_module modules/mod_cache.so
<IfModule mod_cache.c>
LoadModule cache_disk_module modules/mod_cache_disk.so
<IfModule mod_cache_disk.c>
CacheRoot "c:/cacheroot"
CacheEnable disk "/"
CacheDirLevels 5
CacheDirLength 3
</IfModule>
# When acting as a proxy, don't cache the list of security updates
CacheDisable "http://security.update.server/update-list/"
</IfModule>
ما توصیه نمی کنیم چیزی را حذف کنید، زیرا ممکن است باعث آسیب شدید شود. درعوض، میتوانید با افزودن یک نماد “#” در ابتدای هر خط، به طور موقت در بخش حافظه کش تغییر ایجاد کنید. پس از اینکه تغییرات خود را ذخیره کردید، بررسی کنید که آیا با این کار خطای HTTP 304 Not Modified رفع شده است یا خیر.
نتیجه گیری
کد های تغییر مسیر دسته 300 برای بهبود سرعت و عملکرد صفحه استفاده می شوند. متأسفانه، زمانی که سرور یا مرورگر به درستی پیکربندی نشده باشد، ارتباط بین این دو ممکن است قطع شود و منجر به خطای HTTP 304 Not Modified شود. شش روش وجود دارد که می توانید برای رفع آن استفاده کنید، به ویژه:
- پاک کردن اطلاعات کش مرورگر
- اجرای اسکن بدافزار
- غیرفعال کردن افزونه های مرورگر
- پاک کردن DNS و تنظیم مجدد TCI/IP
- امتحان کردن DNS عمومی Google
- بررسی فایل های پیکربندی سرور برای دستورالعمل های تغییر مسیر نادرست
منبع: kinsta.com