Issue metadata
Sign in to add a comment
|
Multiplexing queries to different hosts in one HTTP2 connection looks like a bad idea
Reported by
burund...@gmail.com,
Apr 19 2017
|
||||||||||||||||||||||
Issue descriptionUserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 Example URL: Steps to reproduce the problem: 1. Setup a server (works for nginx/1.11.6) with who hosts (a.example.com and b.example.com) supporting HTTP/2 and the same certificate (*.example.com). 2. Visit https://a.example.com/ 3. Visit https://b.example.com/ fails with 421 Misdirected Request What is the expected behavior? All sites (a.example.com and b.example.com) works. What went wrong? Chrome uses for https://b.example.com/ the same HTTP/2 connection that it creates for https://a.example.com/. As I know, this RFC says that this behavior is correct, but in fact web servers (nginx/1.11.6 is an example) do additional checks and return an error if given host doesn't match the host client used in TLS negotiation. Did this work before? N/A Chrome version: 56.0.2924.87 Channel: stable OS Version: gentoo Flash Version: One workaround may be to create new connection after receiving 421, but some older versions of nginx don't have explicit code for misdirected request and return generic 400 Bad Request. Of course if I am right about RFC this is not a bug of chrome browser, but trouble in web servers. Unfortunately, bad web servers exist so I decided to send this issue to you too.
,
Apr 19 2017
This looks like a dup of 546991.
,
Apr 20 2017
This indeed is a duplicate: Chrome Canary 59.0.3065.0 retries request on a new connection when 421 is received. (It will take some time until it gets to Chrome Stable.) The original motivation for pooling requests based on IP is that most web servers can handle it and it improves latency for the user. Note that once implemented, the ORIGIN frame will be yet another tool for the server to discourage the client from IP based pooling.
,
Apr 20 2017
Looks like you are right, duplicate. Correct reconnection on 421 will solve this problem for new nginx. And error 400 instead of 421 in old nginx (nginx/1.9.12 for example) is not a bug of chrome (and fixed in new versions of nginx). Will wait for this fix in stable, thank you :) |
|||||||||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||||||||
Comment 1 by mmenke@chromium.org
, Apr 19 2017