سلام دوستان.
مدتی است که در پیشخوان سایتم برای آبدیت افزونه ها و یا افزودن فایل در رسانه و یا گذاشتن هر پستی
خطای
This site can’t be reachedThe webpage at https://*****.*/wp-admin/update.php?action=upload-plugin might be temporarily down or it may have moved permanently to a new web address.
ERR_HTTP2_PROTOCOL_ERROR
برخوردم.
تمامی راه های رفع این مشکل از قبیل
پاک کردن کش مرورگر و تغییر دی ان اس و … هر چیزی که که در سرچ ها یاد گرفتم رو انجام دادم.
جالب اینکه در مرورگرهای بجز کروم مثل فایرفاکس ، اپرا ، مایکروسافت ایج ، و… همین خطا رو داشتم و از طرفی چون در حال طراحی سه سایت دیگه هستم . این خطا در پیشخوان سایت های دیگم نمیاد و متا حدی مطمئن شدم که مربوط به سیستم داخلی نیست و تنظیمات هاست باید باشه.
حتی ااس اس ال بر روی ساب دامین رو برداشتم. ساب دامین سایتم روحذف کردم و هنوز که هنوزه این مشکل برطرف نشده.
اگر از دوستان کسی میتونه به من کمک کنه . لطفا منو راهنمایی کنه.
سلام مشکل از هاسته.
به هاستینگتون اطلاع بدین. و اینکه dns هاتون رو هم یه چک بزنید
سلام. دوست عزیز
چند باری به هاست تیکت زدم و با تست و ارایه اسکرین شات که مشکلی از سمت ما وجود نداره ، به تیکت هام پاسخ دادن.
اما نکته جالب توجه این هست که امروز بعد از گذشت 24 ساعت و استفاده نکردن از قند شکن جهت فعالیت ای دیگم برای رفع تحریم ها . بدون اینکه تغییراتی انجام بشه ، مشکل رفع شده.
و عملا من به این نتیجه رسیدم نباید از قند شکن فعلی ام استفاده کنم.
رفع خطای ERR_HTTP2_PROTOCOL_ERROR در ایران
آموزش کامل و راهکارهای عملی
اگر هنگام باز کردن یک وبسایت در گوگل کروم یا مرورگرهای دیگر با پیام ERR_HTTP2_PROTOCOL_ERROR مواجه شدهاید، احتمالاً ارتباط مرورگر شما با سرور سایت بهدرستی برقرار نشده یا در میانه انتقال اطلاعات دچار مشکل شده است.
این خطا ممکن است باعث شود وبسایت اصلاً باز نشود، صفحه ناقص نمایش داده شود یا پس از چند ثانیه بارگذاری، اتصال قطع شود.
با توجه به اختلالهایی که در دورههای مختلف در شبکه اینترنت ایران رخ داده است، کاربران ممکن است هنگام استفاده از اینترنت ثابت، اینترنت همراه یا دسترسی به وبسایتهای خارجی با مشکلات متفاوتی مواجه شوند. بااینحال، مشاهده این خطا بهتنهایی مشخص نمیکند که مشکل از اینترنت ایران است یا از تنظیمات سایت.
در این آموزش، روشهای رفع خطای ERR_HTTP2_PROTOCOL_ERROR را در ویندوز، اندروید، آیفون، گوگل کروم و فایرفاکس بررسی میکنیم. همچنین راهکارهای تخصصی برای مدیران سایت و سرور ارائه خواهیم داد.
خطای ERR_HTTP2_PROTOCOL_ERROR چیست؟
HTTP/2 یکی از نسخههای پروتکل HTTP است که مرورگرها برای دریافت اطلاعات وبسایتها از آن استفاده میکنند.
این پروتکل با امکان انتقال همزمان چند درخواست از طریق یک اتصال، به بارگذاری سریعتر صفحات وب کمک میکند.
برای مثال، هنگامی که یک صفحه اینترنتی را باز میکنید، مرورگر باید فایلهای مختلفی مانند تصویر، CSS، JavaScript و محتوای اصلی صفحه را دریافت کند. HTTP/2 امکان مدیریت کارآمدتر این درخواستها را فراهم میکند.
اما اگر ارتباط HTTP/2 در یکی از مراحل با مشکلی مواجه شود، مرورگر ممکن است خطای زیر را نمایش دهد:
ERR_HTTP2_PROTOCOL_ERROR
این خطا به این معنا نیست که حتماً پروتکل HTTP/2 خراب است. گاهی سرور پاسخ نامعتبر ارسال میکند، گاهی اتصال بهدرستی کامل نمیشود و گاهی تجهیزات یا نرمافزارهای واسط در ارتباط اختلال ایجاد میکنند.
چرا خطای ERR_HTTP2_PROTOCOL_ERROR در اینترنت ایران اتفاق میافتد؟
برای تشخیص علت این مشکل باید چند احتمال را بررسی کنیم.
۱. اختلال در مسیر ارتباطی اینترنت
یکی از دلایل احتمالی، اختلال در مسیری است که اطلاعات از طریق آن میان کاربر و سرور منتقل میشود.
در شرایط عادی، اتصال کاربر به یک وبسایت ممکن است از چندین شبکه و روتر عبور کند. وجود مشکلاتی مانند از دست رفتن بستههای داده، قطع شدن اتصال یا عملکرد نامناسب تجهیزات شبکه میتواند ارتباط را مختل کند.
در ایران نیز اختلال در برخی مسیرهای ارتباطی داخلی و بینالمللی گزارش شده است.
بااینحال، تمام اختلالهای شبکه لزوماً به خطای HTTP/2 منجر نمیشوند و برای تعیین علت دقیق باید اتصال را آزمایش کرد.
۲. محدودیتها و تجهیزات مدیریت ترافیک
بعضی شبکهها از تجهیزات بررسی و مدیریت ترافیک، پروکسیهای واسط یا سامانههای فیلترینگ استفاده میکنند.
اگر این تجهیزات با یک ارتباط HTTPS یا مسیر تبادل داده تداخل پیدا کنند، ممکن است اتصال قطع شود یا پاسخ مورد انتظار مرورگر دریافت نشود.
این موضوع یکی از احتمالهایی است که در بررسی مشکلات اینترنت ایران باید در نظر گرفت.
البته نمایش ERR_HTTP2_PROTOCOL_ERROR بهتنهایی اثبات نمیکند که یک وبسایت فیلتر شده است.
۳. مشکلات سرور یا شرکت میزبانی
گاهی مشکل مستقیماً به وبسرور مربوط میشود.
برای نمونه:
-
ارسال هدرهای HTTP نامعتبر
-
اشکال در فشردهسازی Gzip یا Brotli
-
قطع زودهنگام ارتباط از طرف سرور
-
تنظیمات نادرست HTTP/2
-
ناسازگاری میان وبسرور و پروکسی معکوس
-
اختلال در برخی پاسخهای بزرگ یا فایلهای دانلودی
در این شرایط، حتی کاربران خارج از ایران نیز ممکن است با خطا مواجه شوند.
۴. اختلال در CDN یا سرویس واسط
بسیاری از وبسایتها از شبکه توزیع محتوا یا CDN استفاده میکنند.
در این ساختار، مرورگر مستقیماً به سرور اصلی متصل نمیشود و درخواست ابتدا به CDN ارسال میشود.
اگر ارتباط میان مرورگر و CDN یا میان CDN و سرور اصلی دچار مشکل شود، ممکن است خطای HTTP/2 رخ دهد.
۵. مشکلات مرورگر یا سیستم کاربر
افزونههای مرورگر، آنتیویروسهایی که ترافیک HTTPS را بررسی میکنند، پروکسیهای محلی و تنظیمات شبکه نیز ممکن است در ایجاد این خطا نقش داشته باشند.
به همین دلیل بهتر است پیش از تغییر تنظیمات پیچیده سیستم، چند آزمایش ساده انجام دهید.
رفع سریع خطای ERR_HTTP2_PROTOCOL_ERROR
اگر میخواهید بدون ورود به تنظیمات تخصصی مشکل را برطرف کنید، این مراحل را به ترتیب امتحان کنید:
-
صفحه را یک بار با
Ctrl + F5در ویندوز یاCommand + Shift + Rدر مک بارگذاری مجدد کنید. -
وبسایت را در پنجره ناشناس یا Incognito باز کنید.
-
مرورگر دیگری مانند Firefox یا Edge را امتحان کنید.
-
اگر به Wi-Fi متصل هستید، سایت را با اینترنت همراه آزمایش کنید.
-
اتصال VPN یا پروکسی را در صورت استفاده، موقتاً تغییر دهید یا قطع کنید و نتیجه را مقایسه کنید.
-
مرورگر را به آخرین نسخه پایدار بهروزرسانی کنید.
-
اگر فقط یک وبسایت مشکل دارد، احتمال ایراد سمت سرور یا مسیر دسترسی به همان سایت را نیز بررسی کنید.
اگر با تغییر شبکه مشکل برطرف شود، بررسی مسیر اینترنت اهمیت بیشتری پیدا میکند. اگر سایت در همه شبکهها و مرورگرها خطا بدهد، بررسی سرور یا CDN اولویت بالاتری دارد.
روش اول: رفع خطا در Google Chrome
گوگل کروم یکی از مرورگرهایی است که این پیام خطا را نمایش میدهد.
مرحله اول: استفاده از حالت ناشناس
ابتدا یک پنجره Incognito باز کنید.
در ویندوز:
Ctrl + Shift + N
در مک:
Command + Shift + N
سپس آدرس وبسایت را وارد کنید.
اگر مشکل در حالت ناشناس برطرف شد، احتمال دارد یکی از افزونهها یا دادههای ذخیرهشده مرورگر در ایجاد آن نقش داشته باشد.
توجه داشته باشید که حالت ناشناس تمام افزونهها را الزاماً غیرفعال نمیکند. بعضی افزونهها مجوز فعالیت در این حالت را دارند.
مرحله دوم: غیرفعال کردن افزونهها
آدرس زیر را در مرورگر باز کنید:
chrome://extensions/
افزونهها را موقتاً غیرفعال کرده و دوباره وبسایت را آزمایش کنید.
بهخصوص افزونههایی را بررسی کنید که عملکردی مرتبط با VPN، Proxy، فیلتر محتوا یا تغییر درخواستهای شبکه دارند.
اگر مشکل برطرف شد، افزونهها را یکییکی فعال کنید تا عامل احتمالی مشخص شود.
مرحله سوم: پاک کردن حافظه موقت
در Chrome مسیر زیر را باز کنید:
Settings → Privacy and security → Delete browsing data
در قسمت اطلاعات قابل حذف، ابتدا فقط گزینه Cached images and files را انتخاب کنید.
پاک کردن کوکیها را بهعنوان اولین اقدام انجام ندهید؛ زیرا ممکن است باعث خروج از حسابهای کاربری شود.
پس از پاک کردن حافظه موقت، مرورگر را ببندید و دوباره سایت را باز کنید.
این روش زمانی مفید است که فایلهای ذخیرهشده یا وضعیت قبلی مرورگر مشکل ایجاد کرده باشند. برای اختلال در مسیر اینترنت، راهکار قطعی نیست.
مرحله چهارم: پاک کردن اتصالهای شبکه مرورگر
در صورت استفاده از نسخهای از Chromium که این امکانات را ارائه میدهد، آدرس زیر را باز کنید:
chrome://net-internals/#sockets
گزینه Flush socket pools را انتخاب کنید.
سپس به مسیر زیر بروید:
chrome://net-internals/#dns
گزینه Clear host cache را انتخاب کنید.
این کار اطلاعات اتصال و کش نام دامنه را در مرورگر پاک میکند.
ممکن است اتصالهای فعال قطع شوند، بنابراین بهتر است ابتدا کارهای باز خود را ذخیره کنید.
مرحله پنجم: بررسی HTTP/3 و QUIC
مرورگر Chrome ممکن است برای برخی سایتها از HTTP/3 استفاده کند.
برای آزمایش مشکلات مربوط به این پروتکل:
-
وارد
chrome://flagsشوید. -
عبارت QUIC را جستوجو کنید.
-
در صورت وجود گزینه Experimental QUIC protocol، آن را موقتاً روی Disabled قرار دهید.
-
مرورگر را مجدداً راهاندازی کنید.
-
سایت را آزمایش کنید.
نکته مهم: این کار HTTP/3 را غیرفعال میکند، نه HTTP/2 را.
بنابراین اگر مشکل واقعاً مربوط به HTTP/2 باشد، غیرفعال کردن QUIC لزوماً کمکی نمیکند. این آزمایش بیشتر برای زمانی مناسب است که مرورگر میان پروتکلهای مختلف ارتباطی با مشکل مواجه شده باشد.
اگر تغییری ایجاد نشد، تنظیم را به حالت قبلی برگردانید.
روش دوم: استفاده از Firefox و آزمایش HTTP/1.1
یکی از روشهای کاربردی برای تشخیص مشکل HTTP/2، استفاده از مرورگر Firefox است.
فایرفاکس امکان غیرفعال کردن موقت HTTP/2 را از طریق تنظیمات پیشرفته فراهم میکند.
این روش میتواند مشخص کند آیا ارتباط سایت با HTTP/1.1 بهتر برقرار میشود یا خیر.
آموزش غیرفعال کردن HTTP/2 در Firefox
۱. مرورگر Firefox را باز کنید.
۲. در نوار آدرس عبارت زیر را وارد کنید:
about:config
۳. در صورت نمایش هشدار، گزینه ادامه به تنظیمات پیشرفته را انتخاب کنید.
۴. عبارت زیر را جستوجو کنید:
network.http.http2.enabled
۵. مقدار آن را از true به false تغییر دهید.
۶. مرورگر را مجدداً راهاندازی کنید و سایت موردنظر را باز کنید.
اگر مشکل برطرف شد، احتمال دارد خطا به نحوه استفاده از HTTP/2 مربوط باشد.
برای اینکه آزمایش فقط با HTTP/1.1 انجام شود، باید توجه کنید که Firefox ممکن است همچنان از HTTP/3 استفاده کند. در صورت نیاز میتوانید گزینه زیر را نیز موقتاً روی false بگذارید:
network.http.http3.enable
این تنظیمات صرفاً برای آزمایش و راهکار موقت پیشنهاد میشوند. پس از تشخیص مشکل، بهتر است هر دو تنظیم را به مقدار پیشفرض برگردانید.
غیرفعال کردن دائمی HTTP/2 ممکن است عملکرد برخی وبسایتها را کاهش دهد یا باعث ناسازگاری شود.
اگر سایت با HTTP/1.1 باز شد ولی با HTTP/2 خطا داشت، این نتیجه بسیار مهم است؛ اما هنوز مشخص نمیکند ایراد دقیقاً در مرورگر، مسیر شبکه، CDN یا سرور قرار دارد.
روش سوم: بررسی DNS اینترنت
DNS وظیفه تبدیل نام دامنه وبسایت به آدرس IP را بر عهده دارد.
اگر سرویس DNS پاسخ اشتباه یا قدیمی ارائه دهد، ممکن است مرورگر به مقصد نادرستی متصل شود.
بااینحال، خطای HTTP/2 معمولاً به معنای خرابی مستقیم DNS نیست. تغییر DNS فقط زمانی میتواند کمک کند که مشکل واقعاً به فرایند شناسایی مقصد یا آدرس انتخابشده مربوط باشد.
برای آزمایش میتوانید از یک DNS عمومی معتبر، مانند موارد زیر، استفاده کنید:
Cloudflare DNS
-
1.1.1.1 -
1.0.0.1
Google Public DNS
-
8.8.8.8 -
8.8.4.4
توجه داشته باشید که دسترسی به این سرویسها ممکن است در بعضی شبکههای ایران محدود یا مختل باشد.
همچنین تغییر DNS اختلال در HTTP/2، فیلترینگ مبتنی بر مسیر یا قطع ارتباط بینالملل را بهصورت خودکار برطرف نمیکند.
پاک کردن کش DNS در ویندوز
پنجره Command Prompt را باز کنید و دستور زیر را اجرا کنید:
ipconfig /flushdns
سپس مرورگر را مجدداً باز کنید.
این دستور تنظیمات شبکه یا آدرس DNS شما را تغییر نمیدهد؛ فقط کش DNS ویندوز را پاک میکند.
روش چهارم: تشخیص مشکل اینترنت ایران با تغییر شبکه
اگر از داخل ایران به وبسایتی متصل میشوید و خطای ERR_HTTP2_PROTOCOL_ERROR دریافت میکنید، یکی از مفیدترین آزمایشها مقایسه نتیجه روی شبکههای مختلف است.
برای مثال، وبسایت را با این اتصالها امتحان کنید:
-
اینترنت ثابت منزل یا محل کار
-
اینترنت همراه یک اپراتور دیگر
-
یک اتصال VPN معتبر، در صورت دسترسی
نتایج این آزمایش میتوانند سرنخ مهمی درباره محل مشکل ارائه کنند.
| نتیجه آزمایش | برداشت احتمالی |
|---|---|
| سایت فقط با یک اپراتور خطا میدهد | احتمال مشکل در شبکه یا مسیر همان اپراتور |
| سایت بدون VPN خطا میدهد، اما با VPN باز میشود | احتمال تفاوت در مسیر ارتباطی، محدودیت دسترسی یا نحوه پاسخ CDN |
| سایت با تمام اتصالها خطا میدهد | نیاز به بررسی بیشتر سرور، CDN یا وضعیت عمومی سرویس |
| فقط Chrome خطا میدهد و Firefox درست کار میکند | احتمال تفاوت در رفتار مرورگر، افزونهها یا پروتکل انتخابشده |
| سایت با HTTP/1.1 باز میشود ولی با HTTP/2 خطا میدهد | احتمال وجود مشکلی وابسته به HTTP/2 در یکی از بخشهای اتصال |
این نتایج تشخیص قطعی نیستند. برای مثال، کار کردن یک سایت با VPN بهتنهایی ثابت نمیکند که سایت فیلتر شده است؛ ممکن است CDN از مسیر یا سرور متفاوتی پاسخ داده باشد.
اگر از VPN استفاده میکنید، از سرویسهای نامعتبر برای ورود به حسابهای حساس یا انتقال اطلاعات محرمانه استفاده نکنید.
روش پنجم: رفع خطای ERR_HTTP2_PROTOCOL_ERROR در اندروید
اگر این مشکل را در گوشی اندرویدی تجربه میکنید، مراحل زیر را انجام دهید:
۱. بررسی با اینترنت دیگر
Wi-Fi را خاموش کنید و سایت را با اینترنت همراه باز کنید.
اگر از اینترنت همراه استفاده میکنید، نتیجه را با یک اتصال Wi-Fi مقایسه کنید.
۲. بهروزرسانی مرورگر
از طریق فروشگاه معتبر برنامهها، مرورگر خود را به آخرین نسخه پایدار ارتقا دهید.
۳. پاک کردن کش مرورگر
از تنظیمات اندروید وارد بخش Apps شوید، مرورگر را انتخاب کنید و از قسمت Storage یا Storage & cache، گزینه Clear cache را بزنید.
از انتخاب Clear storage یا Clear data بدون توجه به پیامدهای آن خودداری کنید؛ این گزینهها ممکن است دادههای برنامه و نشستهای کاربری را حذف کنند.
۴. بررسی VPN و Private DNS
اگر VPN، پروکسی یا Private DNS سفارشی تنظیم کردهاید، برای تشخیص مشکل وضعیت آن را بررسی کنید.
در بعضی گوشیها مسیر Private DNS به شکل زیر است:
Settings → Network & Internet → Private DNS
مسیر دقیق به نسخه اندروید و شرکت سازنده بستگی دارد.
اگر از تنظیمات سفارشی استفاده میکنید، میتوانید موقتاً حالت Automatic را امتحان کرده و نتیجه را مقایسه کنید.
تغییر Private DNS راهکار عمومی برای خطای HTTP/2 نیست و بهتر است پس از آزمایش، تنظیم موردنظر خود را بازگردانید.
روش ششم: رفع خطای ERR_HTTP2_PROTOCOL_ERROR در آیفون
در iPhone یا iPad نیز ممکن است هنگام استفاده از Safari یا Chrome با مشکل بارگذاری بعضی وبسایتها مواجه شوید.
برای تشخیص مشکل:
۱. سایت را با اینترنت همراه و Wi-Fi بهصورت جداگانه آزمایش کنید.
۲. مرورگر و نسخه iOS را بهروزرسانی کنید.
۳. در صورت استفاده از VPN یا پروکسی، وضعیت اتصال را بررسی کنید.
۴. همان سایت را در مرورگر دیگری امتحان کنید.
۵. اگر مشکل فقط مربوط به یک وبسایت است، از حذف گسترده اطلاعات مرورگر یا بازنشانی تنظیمات شبکه بهعنوان اولین اقدام خودداری کنید.
بازنشانی تنظیمات شبکه میتواند اطلاعات اتصال و تنظیمات سفارشی شما را تحت تأثیر قرار دهد و معمولاً برای این خطا ضرورت ندارد.
رفع خطای ERR_HTTP2_PROTOCOL_ERROR برای مدیران سایت و سرور
تا اینجا راهکارهای کاربران عادی را بررسی کردیم. اما اگر مدیر یک وبسایت هستید و کاربران شما، بهخصوص کاربران داخل ایران، این خطا را گزارش میکنند، باید مشکل را از نظر فنی بررسی کنید.
اولین توصیه این است که بدون تشخیص علت، HTTP/2 را روی سرور غیرفعال نکنید.
غیرفعال کردن این پروتکل ممکن است بهصورت موقت مشکل را دور بزند، اما همیشه بهترین راهکار نیست.
مرحله اول: بررسی نسخه HTTP با cURL
برای تشخیص اینکه مشکل واقعاً وابسته به HTTP/2 است، از ابزار cURL استفاده کنید.
ابتدا مطمئن شوید نسخه نصبشده cURL از HTTP/2 پشتیبانی میکند:
curl -V
در خروجی باید قابلیت HTTP2 وجود داشته باشد.
حالا درخواست را با HTTP/1.1 آزمایش کنید:
curl -sS -L --http1.1 -o /dev/null \
-w 'HTTP: %{http_version} Status: %{http_code}\n' \
https://example.com/
سپس همان درخواست را با HTTP/2 آزمایش کنید:
curl -sS -L --http2 -o /dev/null \
-w 'HTTP: %{http_version} Status: %{http_code}\n' \
https://example.com/
بهجای example.com دامنه وبسایت خود را وارد کنید.
در ویندوز، بهخصوص PowerShell، بهتر است دستور را با curl.exe اجرا کنید و خروجی را به NUL هدایت کنید. همچنین ممکن است نسخه نصبشده cURL قابلیت HTTP/2 نداشته باشد.
چگونه نتیجه را بررسی کنیم؟
اگر درخواست HTTP/1.1 موفق باشد اما HTTP/2 خطا بدهد، احتمالاً مشکل به نحوه مدیریت HTTP/2 در بخشی از مسیر ارتباطی وابسته است.
بااینحال، اگر هر دو درخواست خطا بدهند، نباید صرفاً HTTP/2 را مقصر دانست.
توجه کنید که درخواستهای cURL ممکن است به دلیل تنظیمات امنیتی وبسایت، پاسخ 403 یا وضعیت دیگری دریافت کنند. چنین پاسخی الزاماً به معنی خرابی پروتکل نیست.
برای تشخیص دقیقتر از گزینه -v استفاده کنید تا اطلاعات مذاکره پروتکل و جزئیات اتصال نمایش داده شود.
مرحله دوم: بررسی اینکه مشکل فقط از ایران رخ میدهد
آزمایشهای مرحله قبل را از حداقل دو موقعیت متفاوت اجرا کنید:
-
یک اتصال اینترنت داخل ایران
-
یک اتصال یا سرور خارج از ایران
ترجیحاً از همان آدرس و در یک بازه زمانی نزدیک استفاده کنید.
اگر HTTP/2 از خارج کشور بدون خطا کار کند ولی از داخل ایران با مشکل مواجه شود، مسیر شبکه، ISP، CDN و تفاوت نقطه اتصال باید بررسی شوند.
اگر خطا از هر دو موقعیت تکرار شود، احتمال مشکلات سمت وبسرور یا سرویس واسط بیشتر میشود.
مرحله سوم: بررسی هدرهای HTTP
بر اساس مستندات Cloudflare، یکی از علتهای شناختهشده خطای ERR_HTTP2_PROTOCOL_ERROR ارسال هدرهای نامعتبر از طرف سرور اصلی است.
هدرها باید با استاندارد HTTP سازگار باشند.
در HTTP/2 استفاده از برخی هدرهای مخصوص مدیریت اتصال HTTP/1.1، مانند Connection، مجاز نیست.
وجود تنظیمات ناسازگار در وبسرور، افزونههای امنیتی یا Reverse Proxy میتواند باعث ایجاد پاسخ نامعتبر شود.
در این مرحله موارد زیر را بررسی کنید:
-
هدرهای تولیدشده توسط وبسرور
-
هدرهای اضافهشده توسط CDN یا Reverse Proxy
-
قوانین مربوط به تغییر هدرهای پاسخ
-
افزونههای فشردهسازی و بهینهسازی
-
تنظیمات کش و فایلهای استاتیک
مرحله چهارم: بررسی فشردهسازی Gzip و Brotli
یکی دیگر از علتهای مستند، مشکل در فشردهسازی پاسخ است.
برای مثال، ممکن است سرور یک فایل فشردهشده ارسال کند اما مقدار Content-Length را بر اساس اندازه نادرست تعیین کرده باشد.
در این وضعیت، مرورگر یا پروکسی ممکن است نتواند پاسخ را بهدرستی پردازش کند.
برای آزمایش، میتوان فشردهسازی را در محیط کنترلشده موقتاً غیرفعال کرد و درخواست را دوباره فرستاد.
اگر مشکل برطرف شد، باید بررسی کنید:
-
آیا Gzip یا Brotli در چند لایه بهصورت ناسازگار اعمال میشود؟
-
آیا Content-Length با اندازه واقعی محتوای ارسالی مطابقت دارد؟
-
آیا فایل فشردهشده سالم است؟
-
آیا CDN پاسخ را دوباره فشرده یا تغییر میدهد؟
غیرفعال کردن دائمی فشردهسازی معمولاً انتخاب مناسبی نیست، زیرا میتواند حجم انتقال داده را افزایش دهد.
مرحله پنجم: بررسی خطا در Cloudflare
اگر وبسایت شما از Cloudflare استفاده میکند، باید دو ارتباط را جداگانه در نظر بگیرید:
ارتباط اول: مرورگر کاربر به Cloudflare
ارتباط دوم: Cloudflare به سرور اصلی وبسایت
این دو اتصال میتوانند از نسخههای متفاوت HTTP استفاده کنند.
بنابراین غیرفعال کردن HTTP/2 روی سرور اصلی الزاماً HTTP/2 را برای کاربران Cloudflare غیرفعال نمیکند.
آزمایش HTTP/2 در Cloudflare
برای وبسایتهایی که پلن آنها اجازه تغییر تنظیمات HTTP/2 را میدهد:
۱. وارد Cloudflare Dashboard شوید.
۲. دامنه موردنظر را انتخاب کنید.
۳. به مسیر زیر بروید:
Speed → Settings → Protocol Optimization
۴. تنظیم HTTP/2 را پیدا کنید.
۵. برای آزمایش کنترلشده، آن را موقتاً غیرفعال کنید و رفتار سایت را بررسی کنید.
محدودیت مهم: طبق مستندات Cloudflare، در پلن Free امکان غیرفعال کردن HTTP/2 در لبه شبکه Cloudflare وجود ندارد. این قابلیت برای پلنهای بالاتر ارائه میشود.
بررسی HTTP/2 to Origin
در همین بخش تنظیماتی با عنوان HTTP/2 to Origin نیز وجود دارد.
این گزینه به ارتباط Cloudflare با سرور اصلی مربوط است.
اگر مشکل در این بخش باشد، تغییر موقت این تنظیم میتواند به تشخیص مشکل کمک کند.
اما اگر مشکل میان مرورگر کاربر و Cloudflare رخ میدهد، غیرفعال کردن HTTP/2 to Origin لزوماً تأثیری نخواهد داشت.
آیا HTTP/3 میتواند جایگزین HTTP/2 شود؟
HTTP/3 بر پایه QUIC کار میکند و از نظر نحوه انتقال اطلاعات با HTTP/2 تفاوت دارد.
در بعضی شرایط، استفاده از HTTP/3 ممکن است مسیری متفاوت برای دریافت محتوای وب فراهم کند.
بااینحال، فعال کردن HTTP/3 تضمین نمیکند مشکل کاربران ایرانی برطرف شود؛ زیرا ممکن است ترافیک UDP یا QUIC نیز در مسیر اینترنت با محدودیت یا اختلال مواجه باشد.
پیشنهاد میشود پیش از تغییر دائمی تنظیمات Cloudflare، عملکرد هر پروتکل از چند شبکه مختلف آزمایش شود.
مرحله ششم: بررسی HTTP/2 در وبسرور LiteSpeed
اگر وبسایت روی LiteSpeed Web Server میزبانی میشود، پشتیبانی از HTTP/2 معمولاً بهصورت پیشفرض فعال است.
برای بررسی تنظیمات، مدیر سرور میتواند وارد WebAdmin Console شود و گزینههای مربوط به HTTP/2 را در بخش SSL مربوط به Listener یا Virtual Host بررسی کند.
در نسخهها و پیکربندیهای پشتیبانیشده، امکان غیرفعال کردن موقت HTTP/2 برای آزمایش وجود دارد.
اگر از cPanel/WHM در کنار LiteSpeed استفاده میکنید، توجه داشته باشید که بعضی تنظیمات وبسرور توسط کنترلپنل مدیریت یا بازنویسی میشوند.
بنابراین تغییر مستقیم فایلهای پیکربندی، بدون بررسی روش مورد تأیید کنترلپنل، توصیه نمیشود.
همچنین اگر Cloudflare یا پروکسی دیگری در مقابل LiteSpeed قرار دارد، ممکن است تغییر تنظیمات LiteSpeed تأثیری بر پروتکل ارتباطی مرورگر تا CDN نداشته باشد.
مرحله هفتم: بررسی HTTP/2 در Nginx
در Nginx جدید، HTTP/2 با دستور http2 مدیریت میشود.
برای نمونه، در نسخههای پشتیبانیشده از Nginx 1.25.1 به بعد، میتوان در پیکربندی مناسب از تنظیم زیر استفاده کرد:
server {
listen 443 ssl;
http2 off;
# سایر تنظیمات SSL و وبسایت
}
این قطعه صرفاً بخش مرتبط با پروتکل را نشان میدهد و یک پیکربندی کامل وبسرور نیست.
در نسخههای قدیمیتر Nginx که از روش listen 443 ssl http2 استفاده میکنند، نحوه غیرفعال کردن HTTP/2 متفاوت است.
پس از هر تغییر، صحت تنظیمات را بررسی کنید:
nginx -t
سپس، در صورت موفقیتآمیز بودن آزمایش پیکربندی، سرویس را با روش مناسب محیط خود بارگذاری مجدد کنید.
این تغییر باید ابتدا بهصورت آزمایشی انجام شود و پس از تعیین علت اصلی، درباره فعالسازی مجدد HTTP/2 تصمیمگیری شود.
مرحله هشتم: بررسی HTTP/2 در Apache و cPanel
در Apache پشتیبانی از HTTP/2 معمولاً از طریق ماژول mod_http2 ارائه میشود.
در سرورهای مجهز به WHM و EasyApache 4 میتوانید وضعیت این ماژول را بررسی کنید:
WHM → Software → EasyApache 4 → Customize → Apache Modules
پیش از هرگونه تغییر، باید مشخص کنید آیا Apache مستقیماً درخواستهای HTTPS را دریافت میکند یا وبسرور دیگری مانند LiteSpeed یا Nginx در مقابل آن قرار دارد.
در پیکربندیهای مناسب Apache، دستور Protocols میتواند تعیین کند چه نسخههایی از HTTP پذیرفته شوند.
برای مثال، تنظیم زیر در محل مجاز پیکربندی سرور یا VirtualHost، استفاده از HTTP/1.1 را مشخص میکند:
Protocols http/1.1
این دستور را نباید بدون بررسی ساختار Apache و کنترلپنل در فایل .htaccess قرار داد.
در سرویسهای هاست اشتراکی نیز ممکن است کاربر به این تنظیمات دسترسی نداشته باشد و لازم باشد مشکل را از طریق شرکت میزبانی پیگیری کند.
چگونه محل اصلی خطا را دقیقتر تشخیص دهیم؟
اگر مدیریت وبسایت را بر عهده دارید، بهتر است بهجای تغییر همزمان چند تنظیم، مشکل را مرحلهبهمرحله بررسی کنید.
بررسی درخواستهای مرورگر
در Chrome کلید F12 را فشار دهید و وارد زبانه Network شوید.
سپس صفحه را مجدداً بارگذاری کنید.
در صورت نیاز ستون Protocol را فعال کنید تا بتوانید نسخه HTTP درخواستهای موفق را مشاهده کنید.
بررسی کنید:
-
آیا درخواست اصلی صفحه خطا میدهد؟
-
آیا فقط فایلهای CSS و JavaScript مشکل دارند؟
-
آیا خطا برای تصاویر یا فایلهای بزرگ رخ میدهد؟
-
آیا همه درخواستها از یک دامنه هستند؟
-
آیا فایلهای CDN یا دامنههای ثالث باعث ناقص شدن صفحه شدهاند؟
برای مثال، اگر فایل HTML اصلی با موفقیت دریافت شود ولی یک فایل JavaScript از دامنه دیگری خطا بدهد، بررسی سرور اصلی بهتنهایی کافی نخواهد بود.
بررسی مستقیم سرور اصلی
اگر از CDN استفاده میکنید و به IP سرور اصلی دسترسی مدیریتی دارید، میتوانید اتصال مستقیم را نیز آزمایش کنید.
برای نمونه:
curl -Iv --resolve example.com:443:203.0.113.10 \
https://example.com/
در این دستور باید دامنه و IP نمونه را با اطلاعات واقعی سرور خود جایگزین کنید.
این روش به شما امکان میدهد بدون تغییر عمومی DNS، اتصال به سرور مشخصی را آزمایش کنید.
اگر پاسخ سرور اصلی درست باشد اما همان درخواست از طریق CDN دچار خطا شود، لازم است تنظیمات یا مسیر ارتباطی CDN نیز بررسی شوند.
البته این نتیجه بهتنهایی اثبات نمیکند که CDN مقصر است؛ تفاوتهای پروتکلی و شرایط اتصال باید در نظر گرفته شوند.
ثبت اطلاعات برای پشتیبانی فنی
اگر مشکل همچنان ادامه داشت، اطلاعات زیر را تهیه کنید:
-
آدرس دقیق صفحهای که خطا میدهد
-
زمان وقوع مشکل و منطقه زمانی
-
نام شرکت ارائهدهنده اینترنت
-
نسخه مرورگر و سیستمعامل
-
نتیجه آزمایش با اینترنت دیگر
-
نتیجه آزمایش HTTP/1.1 و HTTP/2
-
لاگ وبسرور و CDN، در صورت دسترسی
برای مشکلات پیچیدهتر میتوان از ابزار chrome://net-export جهت ثبت گزارش شبکه مرورگر استفاده کرد.
توجه داشته باشید که فایلهای HAR و NetLog ممکن است اطلاعات حساس، آدرسهای خصوصی، کوکیها یا دادههای نشست کاربری را در خود داشته باشند. قبل از ارسال آنها برای شخص ثالث، اطلاعات حساس را حذف کنید.
پرسشهای متداول درباره ERR_HTTP2_PROTOCOL_ERROR
آیا خطای ERR_HTTP2_PROTOCOL_ERROR به معنی فیلتر شدن سایت است؟
خیر. این خطا بهتنهایی نشانه قطعی فیلتر شدن نیست.
ممکن است محدودیتهای شبکه در ایجاد اختلال نقش داشته باشند، اما مشکلات سرور، CDN، مرورگر و پروکسی نیز میتوانند نتیجه مشابهی ایجاد کنند.
برای تشخیص دقیقتر، باید دسترسی به سایت از شبکهها و موقعیتهای مختلف مقایسه شود.
آیا تغییر DNS این خطا را برطرف میکند؟
گاهی، اما نه همیشه.
اگر مشکل از پاسخ DNS یا هدایت کاربر به مقصد نامناسب باشد، تغییر DNS ممکن است کمک کند.
اما اگر اتصال HTTP/2 به دلیل اختلال مسیر یا پاسخ نامعتبر سرور قطع شود، تغییر DNS معمولاً راهکار اصلی نیست.
آیا استفاده از VPN مشکل را حل میکند؟
در بعضی شرایط ممکن است سایت با VPN باز شود، زیرا مسیر ارتباطی یا سرور CDN انتخابشده تغییر میکند.
اما موفقیت اتصال از طریق VPN اثبات نمیکند که علت اصلی مشکل فیلترینگ است.
آیا غیرفعال کردن HTTP/2 خطرناک است؟
غیرفعال کردن موقت HTTP/2 برای آزمایش، در شرایط کنترلشده، میتواند مفید باشد.
اما این کار ممکن است سرعت و کارایی بارگذاری بعضی وبسایتها را کاهش دهد. به همین دلیل بهتر است بهعنوان یک راهکار دائمی و عمومی استفاده نشود، مگر اینکه دلیل فنی مشخصی وجود داشته باشد.
آیا HTTP/2 و HTTP/3 یکسان هستند؟
خیر.
HTTP/2 معمولاً روی TCP اجرا میشود، درحالیکه HTTP/3 از QUIC استفاده میکند.
بنابراین غیرفعال کردن QUIC در Chrome به معنای غیرفعال کردن HTTP/2 نیست.
همچنین خطاهای ERR_HTTP3_PROTOCOL_ERROR و ERR_QUIC_PROTOCOL_ERROR با خطای HTTP/2 تفاوت دارند و ممکن است به آزمایشهای دیگری نیاز داشته باشند.
چرا سایت روی اینترنت همراه باز میشود ولی روی Wi-Fi خطا میدهد؟
این تفاوت میتواند به DNS، مسیریابی، تنظیمات مودم، تجهیزات شبکه یا تفاوت مسیر دو اپراتور مربوط باشد.
بهتر است قبل از تغییر تنظیمات سرور، همان سایت را با چند دستگاه متصل به همان Wi-Fi نیز آزمایش کنید.
اگر فقط یک سایت خطای HTTP/2 بدهد چه کار کنیم؟
ابتدا آن را در مرورگر و شبکه دیگری بررسی کنید.
اگر مشکل فقط به همان سایت محدود است، احتمال وجود مشکل در تنظیمات سایت، CDN یا مسیر دسترسی به آن بیشتر است.
در این شرایط، ارسال آدرس صفحه و زمان بروز خطا به پشتیبانی سایت میتواند مفید باشد.
اگر تمام سایتها این خطا را نمایش دهند چه کنیم؟
ابتدا وضعیت اتصال اینترنت، پروکسی، VPN و نرمافزارهای امنیتی را بررسی کنید.
همچنین دستگاه را با شبکه دیگری آزمایش کنید.
اگر مشکل در چند دستگاه متصل به یک شبکه تکرار شود، بررسی مودم و شرکت ارائهدهنده اینترنت اولویت بیشتری دارد.
جمعبندی: بهترین روش رفع خطای ERR_HTTP2_PROTOCOL_ERROR چیست؟
خطای ERR_HTTP2_PROTOCOL_ERROR همیشه یک علت مشخص ندارد و راهکار مناسب به محل ایجاد مشکل بستگی دارد.
برای کاربران عادی، بهترین نقطه شروع، آزمایش وبسایت در مرورگر و اتصال اینترنت متفاوت است. اگر مشکل همچنان وجود دارد، میتوان با تغییر موقت تنظیمات HTTP/2 در Firefox بررسی کرد که آیا خطا به استفاده از این پروتکل وابسته است یا خیر.
برای مدیران سایت، مقایسه درخواستهای HTTP/1.1 و HTTP/2، بررسی هدرها، فشردهسازی و تنظیمات CDN اهمیت بیشتری دارد.
در شرایطی که بخشی از شبکه اینترنت کشور با اختلال مواجه است، ممکن است مشکل خارج از کنترل کاربر و حتی مدیر وبسایت باشد. در چنین مواردی، تغییرات مکرر و بدون تشخیص در تنظیمات مرورگر یا سرور میتواند عیبیابی را دشوارتر کند.
نتیجه نهایی این است که ابتدا باید مشخص کنیم مشکل از مرورگر، شبکه اینترنت، CDN یا سرور است؛ سپس راهکار متناسب با همان بخش را اجرا کنیم.