After searching a lot, I could not find any topic with the error I’m currently having, which is “ERR_HTTP2_PROTOCOL_ERROR”. I’ve seen ERR_SSL and ERR_SPDY being discussed but not this one.
I use Cloudflare as a CNAME proxy of my .com domain to my Heroku App. It’s currently set to Proxied (instead of DNS Only). Problem is, for some pages, looking at Network tab, the document and the assets are downloaded but the page almost never renders, instead, after a while, Chrome dies with “Failed to load resource: net::ERR_HTTP2_PROTOCOL_ERROR”.
Example URL: https://epicsevendb.com/hero/blood-blade-karin
Problem is, running locally or accessing the Heroku provided URL, this issue NEVER happens: https://epicsevendb-ui.herokuapp.com/hero/blood-blade-karin
Once in a while, trying the example URL might load the html partially instead of giving this error. Nevertheless, since the only difference is that one passes through CF and the other goes directly, I’m unsure what I can do to fix on CF side.
Steps to reproduce:
- Open Chrome Incognito Tab
- Open Devtools, leave on Network Tab
- Paste above URL and press Enter
You’ll see one Document and 5 .js assets. Even though document has status 200, page will not load and after some timeout, Console will show the error and the Document status will change to (failed).
Failed to load resource: net::ERR_HTTP2_PROTOCOL_ERROR:
Failed to load resource: The operation couldn’t be completed. (kCFErrorDomainCFNetwork error 303.)
(image removed as new user can only post one, doh)
I’ve been extensively testing this and it never happens on any browser on heroku’s direct URL, only when using my domain passing through CF.
I thought in disabling HTTP/2 but KB Topic points that this is not an option for free CF usage, only Pro and higher plans. I tried disabling TSL 1.3 just to see if would make any difference, but none happened.
Thank you for any insight!