iOS downgrades HTTP/2 connection to HTTP1.1 when going through proxy

When iOS 10 came out, we noticed that all HTTP requests are going over HTTP1.1 when routed through the proxy.

It doesn't matter whether the proxy is configured programmatically via parameter in NSURLSessionConfiguration, or configured manually on the device via WiFi proxy settings.

If HTTP2 enabled web host is accessed via any proxied mechanism, all requests end up going over HTTP1.1.

The problem seems to be at a pretty low level - the tcpdump traces that we made on the mirrored port show that when request goes over proxied connection (tunnelled through HTTP CONNECT), the iOS sends a TLS Client Hello request that advertises only HTTP1.1 in ALPN. If request is sent directly to the destination host the TLS Client Hello advertises both HTTP1.1 and H2.

We entered a bug number 28265677 into Apple bug tracking system way back in September 2016. There has been no movement or any response from Apple.

I have tried to follow up through the comment on the bug in March 2017 and got no response again.

I tried iOS 11 beta yesterday, and the issue is still not fixed. I understand that Apple doesn't provide tech support to beta releases, but this issue is not new and appeared first time in iOS 10.0.

Knowing that ths behaviour of iOS hasn't been changed for such a long time, my question is - does Apple consider this behavior a bug or it is intended?


If this is a deliberate policy by Apple not to allow HTTP2 through proxy, we would like to know that.


Best regards,


-Vitaliy

If this is a deliberate policy by Apple not to allow HTTP2 through proxy …

No. Since you filed that bug (r. 28265677) it has been investigated by CFNetwork engineering and their conclusion is that this is Just A Bug™. As to when it will get fixed, I can’t give any concrete answers on that front, although I do recommend that you continue testing with future iOS 11 betas.

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"
Hello,
could we have an update on the bug referred here: 28265677.
Do we know if it is fixed in iOS 11 or later?

thanks

could we have an update on the bug referred here: 28265677.

That specific bug (r. 28265677) is marked as fixed in iOS 11.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@apple.com"
iOS downgrades HTTP/2 connection to HTTP1.1 when going through proxy
 
 
Q