گاهی ممکن است در هنگام بازدید از یک وب‌سایت در مرورگر کروم، با خطای ERR_SPDY_PROTOCOL_ERROR مواجه شوید. این اتفاق ممکن است حتا در هنگام بازدید از وب‌سایت‌هایی مشهور رخ دهد. در این مطلب مروری بر این خطا و روش‌های برطرف کردن آن داریم.

پروتکل SPDY و عملکرد آن

خطای ERR_SPDY_PROTOCOL_ERROR مرتبط با پروتکل SPDY است. SPDY پروتکلی است که به‌وسیله‌ی گوگل و با هدف رفع کاستی‌های عملکردی HTTP/1.1، افزایش سرعت در بارگذاری صفحات وب و هم‌چنین افزایش امنیت در هنگام بازدید از صفحات وب معرفی شد. بعدها پروتکل SPDY با اندکی تغییر و افزودن تعاریفی بیش‌تر به آن، را IETF به استاندارد و نسخه‌ی جدیدی برای HTTP با نام HTTP/2 مبدل کرد.

اگر مرورگری از SPDY/HTTP/2 پشتیبانی کند، هنگام برقراری ارتباط با وب‌سرور، هدرهایی را مبنی‌بر پشتیبانی از این پروتکل برای وب‌سرور ارسال می‌کند. اگر تنظیمات SPDY/HTTP/2 روی وب‌سرور انجام شده باشد، وب‌سرور با مشاهده‌ی این هدرها، ارتباط میان مرورگر و خود را بر پایه‌ی SPDY/HTTP/2 برقرار می‌کند. اما اگر از این پروتکل پشتیبانی نکند، این هدرها را نادیده گرفته و ارتباط میان آن ‌دو بر پایه‌ی HTTP/1.1 شکل می‌گیرد.

دلایل بروز خطای ERR_SPDY_PROTOCOL_ERROR و روش‌های رفع آن

چند دلیل رایج برای مواجهه با این خطا و روش‌های حل آن عبارت‌اند از:

۱. به‌روز نبودن مرورگر کروم

ممکن است نسخه‌ی کروم در حال استفاده، از پروتکل SPDY/HTTP/2 پشتیبانی نمی‌کند. بنابراین اگر با این خطا مواجه شدید، نخست مرورگر کروم خود را بررسی کنید که به آخرین نسخه به‌روز باشد.

۲. Cache و Cookieهای قدیمی

گاهی پس از انتقال یک وب‌سایت از HTTP به HTTPS، ممکن است Cookieهای قدیمی این وب‌سایت در مرورگر هم‌چنان مرتبط با نسخه‌ی HTTP باشد و سبب بروز این خطا در هنگام مراجعه به سایت شوند. برای پاک کردن cache و cookie، روی آیکون سه‌نقطه در نوار بالای مرورگر کروم کلیک و گزینه‌ی Setting را انتخاب کنید. سپس نوار پیمایش را پایین بیاورید تا به گزینه‌ی Advance  برسید. سپس روی Clear browsing data کلیک کنید.

در پنجره‌ی باز شده از منوی Time range، گزینه‌ی All time را انتخاب و روی Clear data کلیک کنید. پس از انجام این عمل  و پاک شدن cache، یک‌بار مرورگر را ببندید و دوباره اجرا کنید.

۳. تنظیمات فایروال

در سیستم‌عامل ویندوز به Control panel، بخش Windows Firewall بروید. سپس از منوی سمت چپ گزینه‌ی Allowed Apps را انتخاب کنید. در این پنجره، در قسمت Allowed app and features گزینه‌ی Chrome را بیابید و اگر مارک نبود، تیک آن را بزنید.

۴. استفاده از گزینه‌ی Flush socket

اگر هیچ‌یک از روش‌های بالا منجر به رفع خطا نشدند، از این روش استفاده کنید. برای انجام این عمل در مرورگر کروم، آدرس chrome://net-internals/#sockets را وارد کنید.

در صفحه‌ی جدید گزینه‌ی flush socket pools را انتخاب کنید.

۵. دریافت مجدد آدرس IP

برای دریافت مجدد آدرس IP در سیستم‌عامل ویندوز مراحل زیر را طی کنید:

  • روی دکمه‌ی Start راست کلیک و گزینه‌ی Command prompt(Admin) را انتخاب کنید. در پنجره‌ی باز شده، ابتدا دستور ipconfig/flash dns (برای پاک کردن dns cache سیستم) و سپس ipconfig/release (برای دریافت مجدد IP از DHCP) را وارد کنید. مرورگر کروم را بسته و دوباره اجرا کنید.

برای دریافت مجدد آدرس IP در MacOS به‌شکل زیر عمل کنید:

  • به بخش Network setting بروید. ارتباطی که با آن به اینترنت متصل هستید را انتخاب و روی Advance کلیک کنید. سپس به زبانه‌ی TCP/IP بروید و روی دکمه‌ی Renew DHCP Lease کلیک کنید.

۶. حالت Incognito

در مرورگر کروم روی آیکون سه‌نقطه در نوار بالای صفحه کلیک و گزینه‌ی New incognito windows را انتخاب کنید (روش دوم برای رفتن به این حالت استفاده از کلیدهای ترکیبی Shift+Ctrl+N در سیستم‌عامل ویندوز و Shift + Command + N در MacOS است).

پس از انتخاب این گزینه با محیطی مشابه تصویر زیر روبه‌رو می‌شوید. در نوار آدرس، آدرس سایتی که در هنگام مشاهده‌ی آن با خطای ERR_SPDY_PROTOCOL_ERROR مواجه می‌شدید را وارد کنید.

۷. استفاده از Chrome Cleanup tools

روی آیکون سه‌نقطه در نوار بالای مرورگر کروم کلیک و گزینه‌ی Setting را انتخاب کنید. نوار پیمایش را پایین بیاورید و روی Advance کلیک کنید. سپس به انتهای صفحه بروید و روی گزینه‌ی Clean up computer کلیک کنید. در پنجره‌ی باز شده روی Find کلیک کنید و درنهایت پس از پایان جست‌وجو و یافتن نرم‌افزارهای مخرب، روی Remove کلیک کنید. مرورگر کروم را ببندید و دوباره اجرا کنید.

اگر با هیچ‌یک از روش‌های بالا این خطا رفع نشد به سراغ مراحل پیشنهادی زیر بروید:

  • برای مدت کوتاهی نماد ابر را در پنل کاربری ابر آروان خاموش کنید (دقت داشته باشید که این امر فقط یک راه‌حل موقت است) و سایت خود را دوباره تست کنید تا از عملکرد درست DNS resolve مطمین شوید.
  • بروز این خطا می‌تواند به‌دلیل نبود مطابقت میان مقدار Content-Length header و سایز بدنه ارسالی باشد.
  • از درستی Response Headerهای ارسالی از سمت وب‌سرور خود مطمین شوید. دقت داشته باشید که هدرهای ارسالی حتمن به فرم استاندارد HTTP باشند. اگر از Apache استفاده می‌کنید می‌توانید در این لینک شیوه‌ی تنظیم HTTP Response headerها را مطالعه کنید.
  • اگر وب‌سرور شما قدیمی باشد امکان عدم پیاده‌سازی درست HTTP/2 روی آن بالاست و همین امر می‌تواند دلیلی برای بروز این خطا باشد. بنابراین از به‌روز بودن وب‌سرور خود مطمین شوید.