If you’ve stumbled upon this post it probably means you’re experiencing this odd error from Google Chrome:
This site can’t be reached
The webpage at https://example.com/ might be temporarily down or it may have moved permanently to a new web address.
As you might already know, SPDY (pronounced “speedy”) is a deprecated open-specification networking protocol developed by Google for transporting web content – more specifically, to help load web pages more quickly. To obtain this performance gain, the SPDY protocol manipulates HTTP traffic to speed up the web page load latency – using compression protocols, multiplexing and prioritization strategies – and also (supposedly) improving web security.
The development of SPDY started in 2012 and was implemented in Google Chrome (and other browser) shortly after. The protocol was eventually set to “deprecated” by Google in February 2015, when the final ratification of the HTTP/2 standard was published. The SPDY support was removed since Google Chrome 51 and Mozilla Firefox 50. Apple has also deprecated the technology in MacOS 10.14.4 and iOS 12.2.
Depending on your specific scenario, the issue can either be at server-side (i.e. on the web server hosting the website) or at client-side (i.e. on the browser). In the following paragraph we’ll try to address most of the common causes by enumerating the relevant configuration checks and/or changes that should be applied. Needless to say, you can easily determine if it’s a client issue or a server issue by testing the issue on multiple machines: if each and every Google Chrome is raising the same exception when trying to load the same identical URL, then it’s most likely a server-side issue; conversely, if only one (or a small bunch) of clients are giving such result, you’re probably facing a client-side issue.
One of the reasons why you may see the ERR_SPDY_PROTOCOL_ERROR message is an invalid HTTP header coming from the server. Google Chrome applies a strict set of rules when processing HTTP/2 response – for example, is often unable to handle:
- headers with a space instead of a dash (e.g. Referrer Policy instead of Referrer-Policy);
- headers with double colon after the key name (e.g. Contenty-Securit-Policy:: instead of Contenty-Securit-Policy:);
The first thing to do is to login to your web server machine and check your IIS / NGINX / APACHE service configuration files to ensure that these headers are being sent correctly. Notice that Mozilla Firefox, Safari and other less-strict HTTP/s compatible browsers will almost always ignore any invalid HTTP headers like the above ones, and will just display the page.
If the server-side checks are not applicable in your scenario – or you found no issues there – you should try the following workarounds on your Google Chrome browser.
- Close/reopen Google Chrome and try to reload the page again. We know that this is rather trivial suggestion, but we just had to give that anyway.
- Update Google Chrome to the latest version by going to Settings > Help > About Google Chrome.
- Clear the Google Come cache. You can easily do that by going to Settings > More Tools > Clear Browser Data. When a pop-up menu will show up, select the Advanced tab, check Cookies and other site data and Cached images and files, and clear the cache for good.
- Temporarily disable your antivirus software. Some AV software are known to interfer with HTTP requests/responses to apply some security countermeasures against malicious websites and/or suspicious HTTP traffic; if you have a firewall software with IPS or other web-based protections, you can try to temporarily disable them as well. Alternatively, if your AV/FW software supports white lists or exceptions, you can leave them ON and temporarily add the offending URL to these lists. Please notice the word “temporarily”: you don’t have to get rid of your protection tools, it’s just quick test to see if they are involved in this specific problem in any way.
- Clear the Google Chrome DNS Cache. You can do that by typing chrome://net-internals/#dns in your URL address bar: once the DNS settings page has loaded, click the Clear host cache button to clear it.
- Flush the Google Chrome Socket Pools. You can do that by typing chrome://net-internals/#sockets in your URL address bar: once the DNS settings page has loaded, click the Flush socket pools button to flush them.
- Flush and renew the Windows DNS Cache. Open an elevated command prompt (right-click -> run as administrator), then type the following commands, one at a time
- ipconfig /flushdns
- ipconfig /renew
Be sure to try these workarounds one at a time: be sure to reload the offending page after each attempt to see if the problem persists.
That’s it, at least for now: we sincerely hope that these workarounds will help you fix the ERR_SPDY_PROTOCOL_ERROR Google Chrome error: happy surfing!