Primary eng email
Summary
HTTP/0.9 is the predecessor to HTTP/1.x. The big difference between HTTP/0.9 and HTTP/1.x is that HTTP/0.9 lacks any response headers. So when we send an HTTP/1.x request, if the server responds with a message that doesn't look like HTTP/1.x, we just assume it's an HTTP/0.9 response and treat the entire response is the response body, with no headers.
I want to remove HTTP/0.9 support entirely in M54, so if we can't parse the response response as an HTTP/1.x response, we fail the request with a network error (ERR_INVALID_RESPONSE or somesuch).
Motivation
There's no way to verify the response is actually HTTP/0.9. Anything we receive is treated as a valid HTTP/0.9 response if it's not HTTP/1.x. As a result, if we're talking to a server that implements a protocol that starts by having the server, rather than the client, send the initial data / handshake / whatever, or sends an error response when they see an HTTP request, we treat that as a valid HTTP/0.9 response. Even worse, if those servers don't close the socket as well, we'll treat the response as a hanging GET, and potentially keep the socket alive eternally (Or, if the request was triggered by a webpage, at least until the user navigates away from the webpage).
If a broken server sends extra data at the end of an HTTP/1.x response, we'll potentially treat that extra data as an HTTP/0.9 response to the next request, if we manage to reuse the socket before we receive that extra junk data. If the request was for the contents of a frame, we'll generally either just display the resulting garbage to the user, or save it to a file, depending on the result of the mime sniffer, which we'll always have to use, since without headers, the server can't send us a mime type.
There are similar cases where we're talking to broken SSL server or using a broken proxy.
HTTP/0.9 servers are also unable to indicate a request failed to the browser, which can cause problems with caching heuristics.
Some of this weirdness has lead a security issue that's fundamental to the design of HTTP/0.9: https://crbug.com/600352, which affects all major browsers. I apologize that it's currently access restricted. We'll open it up once the reporter publicly discloses the problem. The only foolproof way to fix the issue is to remove HTTP/0.9 support all together.
Alternative implementation suggestion for web developers
Switch to using HTTP/1.0, HTTP/1.1, or, even better, HTTP/2. Switching to HTTP/1.x should be a very simple change.
RFC 1945, the original spec for HTTP/1.0 came out in 1996, about two decades ago, and fixed many of the shortcomings of HTTP/0.9. I don't think it's unreasonable to people to update their servers to support it.
Compatibility Risk
Servers that require HTTP/0.9 support will stop working. The main potential problem here is with embedded systems that, through bugs or deliberate design, require HTTP/0.9 support. We're not aware of any such devices, but that's not to say they're not out there.
Current Browser Support:
Edge: Supports HTTP/0.9. No signals on removing it yet. It's my understanding that Edge supports HTTP/0.9 only because Chrome does. Hopefully they'll follow suit in removing it.
FireFox: Supports HTTP/0.9. They're aware of the issue, but to the extent of my knowledge, haven't yet taken action. Unclear what action they'll take, when they do.
Safari: Supports HTTP/0.9. As a result of the issue, they've restricted HTTP/0.9 to certain ports. This mitigates the problem, but does not solve it.
Usage information
Public Tracking Bug
Entry on the feature dashboard
N/AOf the possible HTTP/0.9 responses, how many occur in the main frame? In other words how many more error pages would this change introduce?
Thanks,
-Darin
--
You received this message because you are subscribed to the Google Groups "net-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to net-dev+u...@chromium.org.
To post to this group, send email to net...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/net-dev/CAEK7mvq_4vKV3mYpRP447aosHB97jOXQhSJ_QOa-mzmQDeAyvQ%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/net-dev/CAP0-QptWup0%2BeYppqj-4vaYV4QZ7XfjkqirewqK3yc77jkwcXA%40mail.gmail.com.
Hooray for the idea that we might at last remove support for this misbegotten pitiful excuse for a protocol! I sometimes think of http/0.9 as a great example of how NOT to do protocol design - and the fact it got the Web started just shows how important other factors are....
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
LGTM3
Should we have a backup plan ready to mitigate the security issue in case we find the breakage/complaints are too great late in M54 beta?
--
You received this message because you are subscribed to the Google Groups "net-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to net-dev+u...@chromium.org.
To post to this group, send email to net...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/net-dev/01353c16-7d52-4133-9130-884447ca48f8%40chromium.org.
--
You received this message because you are subscribed to the Google Groups "net-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to net-dev+u...@chromium.org.
To post to this group, send email to net...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/net-dev/CAFUtAY9091CWf92ECJrwzijd3RMkVCR%2BRK6y4QFHs6hDwS0T_g%40mail.gmail.com.
If need be, we can do what Safari did - restrict HTTP/0.9 to port 80 for HTTP and 443 for HTTPS, which mitigates the problem but does not fix it. If we have to go that route, I do think we should still push for complete removal of HTTP/0.9 in a few revisions.
Rather than consider the percentage of pages, it would be good to see what the percentage impacted users would be. You should be able to harvest that from the histograms as well.
Jim
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/net-dev/CAP0-QptWup0%2BeYppqj-4vaYV4QZ7XfjkqirewqK3yc77jkwcXA%40mail.gmail.com.
To unsubscribe from this group and stop receiving emails from it, send an email to net-dev+unsubscribe@chromium.org.
To post to this group, send email to net...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/net-dev/CAEK7mvq_4vKV3mYpRP447aosHB97jOXQhSJ_QOa-mzmQDeAyvQ%40mail.gmail.com.
--
You received this message because you are subscribed to the Google Groups "net-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to net-dev+unsubscribe@chromium.org.
To unsubscribe from this group and stop receiving emails from it, send an email to net-dev+u...@chromium.org.
To post to this group, send email to net...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/net-dev/CAEK7mvq_4vKV3mYpRP447aosHB97jOXQhSJ_QOa-mzmQDeAyvQ%40mail.gmail.com.
--
You received this message because you are subscribed to the Google Groups "net-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to net-dev+u...@chromium.org.
--
You received this message because you are subscribed to the Google Groups "net-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to net-dev+unsubscribe@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/net-dev/CAEK7mvrmRHi6KvdPjF3JVPNmypLFqzCDTLBeEiQhhJm%2Bhaensw%40mail.gmail.com.
--
You received this message because you are subscribed to the Google Groups "net-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to net-dev+unsubscribe@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/net-dev/CAEK7mvrmRHi6KvdPjF3JVPNmypLFqzCDTLBeEiQhhJm%2Bhaensw%40mail.gmail.com.
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.
I have been thinking of yellow single-click warning interstitials for things like OCSP server not available for a while now.
To unsubscribe from this group and all its topics, send an email to net-dev+unsubscribe@chromium.org.
To post to this group, send email to net...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/net-dev/CAOqqYVFNe0g4E3tqvHrwBcaE7iHrABDrD6NV0NNuQvyR1MsBMw%40mail.gmail.com.
--
You received this message because you are subscribed to the Google Groups "net-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to net-dev+u...@chromium.org.
To post to this group, send email to net...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/net-dev/c1e13494-d3af-4a6d-af8d-1476771eb97a%40chromium.org.
To unsubscribe from this group and stop receiving emails from it, send an email to net-dev+unsubscribe@chromium.org.
To post to this group, send email to net...@chromium.org.