net::ERR_SPDY_PROTOCOL_ERROR when making XMLHTTPRequest over HTTP2
Reported by
joshuaol...@gmail.com,
Feb 16 2017
|
|||
Issue description
UserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Steps to reproduce the problem:
1. Set up IIS 10 on Server 2016 with SSL
2. Create a simple webpage that includes jquery
3. Create an empty file on the server called 'do-nothing.txt'
4. Execute this from the Console on the Developer Tools: $.get('/do-nothing.txt'); setTimeout(function() {$.get('/do-nothing.txt');}, 10000);
What is the expected behavior?
I would expect two successful GET requests to be executed, 10 seconds apart.
What went wrong?
The second request returns net::ERR_SPDY_PROTOCOL_ERROR.
Did this work before? N/A
Chrome version: 56.0.2924.87 Channel: stable
OS Version: 10.0
Flash Version: Shockwave Flash 24.0 r0
If the delay is changed to something less than about 9000 ms then both requests are successful. This error does not occur on FF, Edge, or IE 11.
,
Feb 17 2017
Could you please capture a network event log according to https://sites.google.com/a/chromium.org/dev/for-testers/providing-network-details and post it here? Thank you. There is a 10 second timeout related to PING frames in SpdySession, so that might be it.
,
Feb 17 2017
Most certainaly.
Network event log attached. I was testing with calls to "do-nothing.txt" using this command at the console:
$.get('/rpc/do-nothing.txt?_=' + Math.random());
setTimeout(function() {$.get('/rpc/do-nothing.txt?_=' + Math.random());}, 10000);
The first one with the url parameter _=0.7601539528710615 was successful. Then 10 seconds later the call with the url parameter _=0.8330301438587031 failed with net::ERR_SPDY_PROTOCOL_ERROR.
,
Feb 17 2017
Thank you.
Chrome seems to send one PING, but receive two acknowledgements:
t=13215 [st=10526] HTTP2_SESSION_PING
--> is_ack = false
--> type = "sent"
--> unique_id = 1
...
t=13216 [st=10527] HTTP2_SESSION_PING
--> is_ack = true
--> type = "received"
--> unique_id = 1
t=13216 [st=10527] HTTP2_SESSION_PING
--> is_ack = true
--> type = "received"
--> unique_id = 0
This indeed is a protocol error. This error is not triggered when waiting for less than 10 seconds, because Chrome does not send a PING frame in that case. If this is indeed the case, that's a server error. It is also the possible that Chrome processes incoming HTTP/2 bytes incorrectly.
Could you please do another network capture, but this time byte-level capture, as described in the Advanced section at the bottom of https://sites.google.com/a/chromium.org/dev/for-testers/providing-network-details ? That will save raw bytes, allowing me to manually decode the bytes Chrome receives, and to determine if this is a client or server issue.
Thank you.
,
Mar 9 2017
Network bug triager here. Friendly ping, can you respond to comment #4?
,
Mar 9 2017
I might be able to do traces within 18 hours. Experiencing the same problem in both stable and dev. :)
,
Mar 9 2017
The issue was related to a bug on the Barracuda Load Balancer. Information provided but Comment #4 was used to help Barracuda release a patch. So, thank you all around for the help.
,
Mar 9 2017
Closing this issue based on comment 7. Feel free to open another issue if the problem is not solved by the Barracuda patch. |
|||
►
Sign in to add a comment |
|||
Comment 1 by ajha@chromium.org
, Feb 17 2017Labels: Needs-Triage-M56